断言
语法
variable : 变量
flag: 如果是T,如何可以转为T的类型,则返回true,否则返回flase
element: interface变量
T: 断言的类型
variable, flag := element.(T)实例:
package main
import "fmt"// 定义人类的共有方法type Person interface { sayHi()}// 定义中国人type Chinese struct { name string}// 定义美国人type An struct { name string}
func main() { var ch Chinese = Chinese{"小米"} // 定义一个Chinese并赋值 var an An = An{"join"} // 定义一个An并赋值 greet(ch) // 运行各自的sayHi方法 greet(an) // 运行各自的sayHi方法}// 输出各国人的sayHifunc greet(p Person) { p.sayHi() ch, flag := p.(Chinese) // 断言, 如果是传入的Person类型是Chinese,那么flag返回true if flag == true { // 如果是Chinese类型, 则运行它的私有方法 ch.eat() }}// Chinese的sayHifunc (c Chinese) sayHi() { fmt.Println(c.name)}// An的sayHifunc (a An) sayHi() { fmt.Println(a.name)}// Chinese的私有方法func (c Chinese) eat() { fmt.Println("吃东西")}