为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

假设问题是关于围棋的,例如

var _ foo.RequiredInterface = myType{} // or &myType{} or [&]myType if scalar

因为顶级域名(TLD)会在编译时为您检查。


查看完整回答
反对 回复 2021-05-10
?
桃花长相依

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没有“实现”声明?


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信