在查看go的代码的时候,我们可能会看到这样的语句。

var _ Person = (*Student)(nil)  
var _ Person = (*Worker)(nil)

这个语句是用来验证Student和Worker是否实现了Person这个interface的,因为在go语言当中,实现一个接口是不需要显式生命的,只要实现了一个接口的所有方法,那么就自然实现了这个接口。

所以就算我们只是实现了接口的部分方法,那么只要不使用未实现的部分那就是不会报错的,但是类型实现一个接口通常就是要能够使用接口接受类型的,如果接口实现的不完全,那么接收就会报错。

上面的语句就是检验Student和Worker是否实现了Person的接口,这样在编译的时候我们就能够立即发现错误。