package main
type Writeable interface {
OnWrite() interface{}
}
type Result struct {
Message string
}
func (r *Result) OnWrite() interface{} {
return r.Message
}
// what does this line mean? what is the purpose?
var _ Writeable = (*Result)(nil)
func main() {
}
代码段中的注释表达了我的困惑。 据我所知,带注释的行通知编译器检查结构是否已实现接口,但我不太确定。有人可以帮助解释目的吗?
答案 0 :(得分:7)
正如您所说,这是验证Result
实施Writeable
的方法。来自GO FAQ:
您可以要求编译器检查类型T是否实现了 接口I尝试分配:
type T struct{} var _ I = T{} // Verify that T implements I.
空白标识符_代表此处不需要的变量名称(从而防止“声明但未使用”错误)。
(*Result)(nil)
通过converting Result
到nil
创建一个指向*Result
类型值的未初始化指针。这样可以避免为new(Result)
或&Result{}
带来空结构的内存分配。