hol*_*lys 1 methods interface go
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() {
}
Run Code Online (Sandbox Code Playgroud)
代码段中的注释表达了我的困惑.据我所知,带注释的行通知编译器检查结构是否已实现接口,但我不太确定.有人可以帮助解释目的吗?
正如你所说,这是一种验证Result工具的方法Writeable.来自GO FAQ:
您可以通过尝试赋值来要求编译器检查类型T是否实现了接口I:
Run Code Online (Sandbox Code Playgroud)type T struct{} var _ I = T{} // Verify that T implements I.
空白标识符_代表此处不需要的变量名称(从而防止"声明但未使用"错误).
(*Result)(nil)Result通过转换 nil为创建一个未初始化的指向值类型的指针*Result.这避免了一个空的结构,你会与得到的内存分配new(Result)或&Result{}.