Go 语言反射机制全解析
1. 接口断言
接口断言可以在不同接口之间进行。假设有两个不同的接口:
type Fooer interface {
Foo()
}
type Barer interface {
Bar()
}
定义两种类型:一种只实现其中一个接口,另一种同时实现两个接口:
type A int
func (A) Foo() {}
type B int
func (B) Bar() {}
func (B) Foo() {}
如果为第一个接口定义一个新变量,只有当底层值的类型同时实现了两个接口时,向第二个接口的断言才会成功;否则,断言将失败:
func main() {
var a Fooer
a = A(0)
v, ok := a.(Barer)
fmt.Println(v, ok)
a = B(0)
v, ok = a.(Barer)
fmt.Println(v, ok)
}
完整示例: https://play.golang.org/p/bX2rnw5pRXJ
一个实际用例是检查 io.Reader 接口是否同时也
超级会员免费看
订阅专栏 解锁全文
1780

被折叠的 条评论
为什么被折叠?



