这是一个小示例,说明一个 value 同时可以既是这种 interface 又是那种 interface。
package mainimport "fmt"type Ia interface { myMethod1()}type Ib interface { myMethod2()}type myInt intfunc (myInt) myMethod1() {}func (myInt) myMethod2() {}func main() { var i interface{} i = myInt(1) if _, ok := i.(Ia); ok { fmt.Println("I'm Ia.") } if _, ok := i.(Ib); ok { fmt.Println("I'm Ib.") }}
其中,i 不能是 non-interface type, 可以是 interface{} 或者 Ia 或者 Ib。