我有界面:
type MyInterface interface {
...
}
我希望标记我的结构实现它。我认为这是不可能的,但我想确定。
我做了以下操作,但我认为它会产生一个实现接口的匿名变量。我是对的吗?
type MyStruct struct {
...
MyInterface
}
答案 0 :(得分:15)
在Go中,实现接口是隐式的。无需将其明确标记为实现接口。虽然它有点不同,但你可以使用赋值来测试一个类型是否实现了一个接口,如果没有,它会产生一个编译时错误。它看起来像这样(Go的FAQ页面中的例子);
type T struct{}
var _ I = T{} // Verify that T implements I.
var _ I = (*T)(nil) // Verify that *T implements I.
要回答你的第二个问题,是的,就是说你的结构由一个实现该接口的类型组成。