猿问

确保类型在Go中的编译时实现接口

如何确保类型在编译时实现接口?这样做的典型方法是失败地分配该类型的支持接口,但是我有几种类型只能动态转换。在运行时,这会生成非常粗糙的错误消息,而没有给出针对编译时错误的更好诊断。在运行时发现我期望支持接口的类型也很不方便,实际上却不支持。


森栏
浏览 239回答 3
3回答

12345678_0001

假设问题是关于围棋的,例如var _ foo.RequiredInterface = myType{} // or &myType{} or [&]myType if scalar因为顶级域名(TLD)会在编译时为您检查。

桃花长相依

在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没有“实现”声明?
随时随地看视频慕课网APP

相关分类

Go
我要回答