如何将golang结构标记为实现接口?

Ser*_*i G 9 go

我有界面:

  type MyInterface interface {
  ...
  }
Run Code Online (Sandbox Code Playgroud)

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

我做了以下,但我认为它会产生一个实现接口的匿名变量.我对吗?

  type MyStruct struct {
    ...
    MyInterface
  }
Run Code Online (Sandbox Code Playgroud)

eva*_*nal 17

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

type T struct{}
var _ I = T{}       // Verify that T implements I.
var _ I = (*T)(nil) // Verify that *T implements I.
Run Code Online (Sandbox Code Playgroud)

要回答你的第二个问题,是的,就是说你的结构由一个实现该接口的类型组成.

  • 谢谢,这是我多年来一直保留在 GO lang 工具箱中的最佳技巧之一。 (3认同)