无法理解一段golang代码

时间:2015-06-08 05:25:19

标签: methods go interface

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() {

}

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

1 个答案:

答案 0 :(得分:7)

正如您所说,这是验证Result实施Writeable的方法。来自GO FAQ

  

您可以要求编译器检查类型T是否实现了   接口I尝试分配:

type T struct{} 
var _ I = T{}   // Verify that T implements I.

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

(*Result)(nil)通过converting Resultnil创建一个指向*Result类型值的未初始​​化指针。这样可以避免为new(Result)&Result{}带来空结构的内存分配。