10、Linux 文件操作与管理全解析
2025/12/17 8:00:50
接口断言可以在不同接口之间进行。假设有两个不同的接口:
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