这个带有下划线,内联接口和赋值的变量声明是什么?

时间:2013-01-07 18:51:47

标签: syntax go

这段Go代码的作用是什么?

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

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

1 个答案:

答案 0 :(得分:12)

此构造将声明一个名称为blank identifier的变量,其类型由类型文字给出;这种情况下的接口定义。接下来是初始化表达式 - 在这种情况下指向复合文字的指针。

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