Skip to main content

断言

语法 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方法
}
// 输出各国人的sayHi
func greet(p Person) {
p.sayHi()
ch, flag := p.(Chinese) // 断言, 如果是传入的Person类型是Chinese,那么flag返回true
if flag == true { // 如果是Chinese类型, 则运行它的私有方法
ch.eat()
}
}
// Chinese的sayHi
func (c Chinese) sayHi() {
fmt.Println(c.name)
}
// An的sayHi
func (a An) sayHi() {
fmt.Println(a.name)
}
// Chinese的私有方法
func (c Chinese) eat() {
fmt.Println("吃东西")
}