尝试在go中了解interface
的空白功能。
type Manager interface {
GetAge(name string) (int, error)
}
type manager struct {
}
var _ Manager = &manager{}
func NewManager() Manager {
return &manager{}
}
答案 0 :(得分:2)
这是一个特殊的习惯用法,用于在编译时断言具体类型是否实现给定的接口。
在上面的代码中,如果编写manager
类型的人忘记为它实现GetAge
方法,则代码不会编译,编译错误会告诉他们确切的方法很缺失。
这里可能看起来有点多余,但如果需要通过类型实现的接口具有大量方法,则此技术可能会有所帮助。
请注意,由于上述原因,上面的代码不会编译。此外,您需要确保在空白声明中使用&manager{}
,它实现*manager
manager
(指向Manager
的指针)界面,而不仅仅是manager
。