从AA>

type ValueConverter interface {
    // ConvertValue converts a value to a driver Value.
    ConvertValue(v interface{}) (Value, error)
}

var Bool boolType

type boolType struct{}

var _ ValueConverter = boolType{} // line 58

func (boolType) String() string { return "Bool" }

func (boolType) ConvertValue(src interface{}) (Value, error) {....}

我知道valueconverter是一个接口名。第58行似乎声明booltype实现接口valueconverter,但这有必要吗?我删除了第58行,代码运行良好。

最佳答案

它提供一个静态(编译时)检查boolType是否满足ValueConverter接口。用作变量名的_告诉编译器有效地放弃rhs值,但是要键入check并评估它是否有任何副作用,但是匿名变量本身不占用任何进程空间。
在开发时,它是一个方便的构造,接口的方法集和/或由类型实现的方法经常更改。该构造用于防止忘记匹配类型和接口的方法集,其目的是使这些方法集兼容。它有效地防止了带有这种省略的中断(中间)版本。

10-02 10:44