7

这段 Go 代码片段是做什么的?

var _ interface {
    add(string) error
} = &watcher{}

我相信&watcher{}返回两件事,第一个被丢弃,第二个被分配给......一个接口?我在 Github 上的fswatch中找到了代码。

4

1 回答 1

12

此构造将声明一个具有空白标识符名称的变量,其类型由类型文字给出;在这种情况下是一个接口定义。接下来是初始化表达式——在这种情况下是一个指向复合文字的指针。

该片段的整体功能是静态地确保 a*watcher满足所述接口,因为_变量不会以任何方式实现,并且只能观察到初始化程序的任何可能的副作用。静态(如本例)或动态(例如调用在运行时分配给某些全局变量、注册处理程序等的函数)

于 2013-01-07T19:00:36.540 回答