【问题标题】:How to mark golang struct as implementing interface?如何将 golang 结构标记为实现接口?
【发布时间】:2016-01-10 10:16:15
【问题描述】:

我有接口:

  type MyInterface interface {
  ...
  }

我想标记我的结构实现了它。我认为这是不可能的,但我想确定。

我做了以下,但我认为它会导致实现接口的匿名变量。我说的对吗?

  type MyStruct struct {
    ...
    MyInterface
  }

【问题讨论】:

标签: go


【解决方案1】:

在 Go 中,实现接口是隐式的。无需明确将其标记为实现接口。虽然有点不同,但你可以使用赋值来测试一个类型是否实现了一个接口,如果没有,它会产生一个编译时错误。它看起来像这样(来自 Go 的常见问题页面的示例);

type T struct{}
var _ I = T{}       // Verify that T implements I.
var _ I = (*T)(nil) // Verify that *T implements I.

回答您的第二个问题,是的,也就是说您的结构由实现该接口的类型组成。

【讨论】:

  • 谢谢,这是我多年来保存在 GO lang 工具箱中的最佳技巧之一。
  • 您好,这可能是一个线程,但是,如果实现是这样的,您将如何实现设计模式?是否还有可能>
  • 这很有帮助。非常感谢这种技术来检查缺少哪些方法。
猜你喜欢
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 2016-09-30
  • 2020-03-31
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多