在golang代码中,你可能会遇到这样的情况:
声明了一个接口,声明了一个结构体。用结构体实现了接口的方法,同时,要做出检查:这个结构体是否完整实现了接口的方法。
- 首先声明一个接口
type Sentinel interface {
HasAccess() bool
}
- 声明一个结构体
type Admin struct {}
- 实现接口方法
func (*Admin) HasAccess() bool {
return true
}
重点来了:校验该结构体是否实现了接口方法
var _ Sentinel = (*Admin)(nil)
或
var _ Sentinel = &Admin{}
如果Admin没有实现Sentinel定义的方法,那么代码将在编译阶段无法通过。