在Go中,你不\xe2\x80\x99t声明你需要实现一个接口,你只需执行它(它\xe2\x80\x99s称为\xe2\x80\x98结构类型\xe2\x80\x99类似于\xe2 \x80\x98duck 在动态语言中输入 \xe2\x80\x99)。\n如果你想强制一个类型实现一个接口(比如当你 \xe2\x80\x98inherit\xe2\x80\x99 C# 中的接口或例如Java)?换句话说,如果忘记实现接口(或签名错误)是一个错误,并且您希望尽早发现该错误,该怎么办?最好的方法是什么?
\n您可能做的最好的事情就是尝试将该类型的实例分配给接口变量
例如,您想确保类型A实现Stringer接口。
你可以这样做
var _ Stringer = new(A) //or
var _ Stringer = A{}
Run Code Online (Sandbox Code Playgroud)
这是示例程序,在示例中A实现了接口,但B没有
package main
import (
"fmt"
)
type Stringer interface {
String() string
}
type A struct {
}
func (a A) String() string {
return "A"
}
type B struct {}
var _ Stringer = new(A)
var _ Stringer = new(B)
func main() {
fmt.Println("Hello, playground")
}
Run Code Online (Sandbox Code Playgroud)
播放链接在这里:play.golang