无法理解一段golang代码

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)

代码段中的注释表达了我的困惑.据我所知,带注释的行通知编译器检查结构是否已实现接口,但我不太确定.有人可以帮助解释目的吗?

Iam*_*NaN 7

正如你所说,这是一种验证Result工具的方法Writeable.来自GO FAQ:

您可以通过尝试赋值来要求编译器检查类型T是否实现了接口I:

type T struct{} 
var _ I = T{}   // Verify that T implements I.
Run Code Online (Sandbox Code Playgroud)

空白标识符_代表此处不需要的变量名称(从而防止"声明但未使用"错误).

(*Result)(nil)Result通过转换 nil为创建一个未初始化的指向值类型的指针*Result.这避免了一个空的结构,你会与得到的内存分配new(Result)&Result{}.