如何确保类型在编译时实现接口?这样做的典型方法是失败地分配该类型的支持接口,但是我有几种类型只能动态转换。在运行时,这会生成非常粗糙的错误消息,而没有给出针对编译时错误的更好诊断。在运行时发现我期望支持接口的类型也很不方便,实际上却不支持。
3 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
假设问题是关于围棋的,例如
var _ foo.RequiredInterface = myType{} // or &myType{} or [&]myType if scalar
因为顶级域名(TLD)会在编译时为您检查。
桃花长相依
TA贡献1860条经验 获得超8个赞
在Go语言中,没有通过设计实现“实现”的声明。要求编译器通过尝试分配来检查类型是否T实现了接口的唯一方法I(是的,是虚拟的)。注意,Go lang区分在结构和指针上声明的方法,在赋值检查中使用正确的方法!
type T struct{}
var _ I = T{} // Verify that T implements I.
var _ I = (*T)(nil) // Verify that *T implements I.
请阅读常见问题解答以了解详细信息,为什么Go没有“实现”声明?
- 3 回答
- 0 关注
- 238 浏览
添加回答
举报
0/150
提交
取消