MENU

[FAQ]我如何保证我的类型满足某个接口?

November 7, 2020 • Go FAQ

你可以通过尝试赋值来要求编译器检查类型 T 是否实现了接口 I:

type T struct{}
var _ I = T{} // 确认T是否实现了I。

T 未实现 I,则错误会在编译时捕获。

如果你希望接口的使用者显式地声明它们实现了它,你可以将一个带描述性名称的方法添加到该接口的方法集中:

type Fooer interface { 
    Foo() 
    ImplementsFooer() 
}

然后类型必须实现 ImplementsFooer 方法成为 Fooergodoc的输出中清晰地记录了事实和通告。

type Bar struct{}
func (b Bar) ImplementsFooer() {} 
func (b Bar) Foo() {}

大部分代码无需使用这类约束,因为它们限制了实用程序的接口思想。 但有时候,它们也需要解决相似接口之间的歧义。

ArchivesQR Code
QR Code for this page
Tipping QR Code