interface的变量赋值时,需要检查右侧对象是否实现interface的方法集,若实现,则赋值Ok,否则不能被赋值。
常见问题
type tester interface {
test()
string() string
}
type data struct {}
func (d *data) test() {}
func (d data) string() string {
return ""
}
赋值:
func main() {
var d data
//错误
//data实现的方法:string()
var t tester = d
//正确
//*data实现的方法:string()和test()
t = &d //ok
t.test()
}
典型应用
在类型的方法定义时,一般场景下都会定义为指针方法:
func (d *data) test() {}
所以在对interface变量赋值时,一般使用指针赋值:
var d data
var t tester = &d
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。