Methods 无法理解一段golang代码
代码片段中的注释表达了我的困惑。Methods 无法理解一段golang代码,methods,go,interface,Methods,Go,Interface,代码片段中的注释表达了我的困惑。 据我所知,带有注释的行通知编译器检查结构是否实现了接口,但我不太确定。有人能帮你解释一下目的吗?正如你所说,这是一种验证结果实现可写的方法。从: 您可以要求编译器检查类型T是否实现了 通过尝试分配接口I: package main type Writeable interface { OnWrite() interface{} } type Result struct { Message string } func (r *Result)
据我所知,带有注释的行通知编译器检查结构是否实现了接口,但我不太确定。有人能帮你解释一下目的吗?正如你所说,这是一种验证
结果
实现可写
的方法。从:
您可以要求编译器检查类型T是否实现了
通过尝试分配接口I:
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() {
}
空白标识符u代表此处不需要的变量名(从而防止出现“已声明但未使用”的错误)
(*Result)(nil)
通过nil
到*Result
创建指向Result
类型值的未初始化指针。这避免了为空结构分配内存,就像您使用new(Result)
或&Result{}
所说的那样,这是一种验证Result
实现可写性的方法。从:
您可以要求编译器检查类型T是否实现了
通过尝试分配接口I:
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() {
}
空白标识符u代表此处不需要的变量名(从而防止出现“已声明但未使用”的错误)
(*Result)(nil)
通过nil
到*Result
创建指向Result
类型值的未初始化指针。这避免了为空结构分配内存,就像使用new(Result)
或&Result{}
可能重复的