一尘不染

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

go

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

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

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


阅读 161

收藏
2020-07-02

共1个答案

一尘不染

这个结构将声明一个带有空白标识符名称的变量,其名称由类型文字提供;在这种情况下为接口定义。接下来是初始化程序表达式-
在这种情况下为复合文字的指针。

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

2020-07-02