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{}

可能重复的