Go 断言(x.(T))

  • `x.(T)` 【变量.(类型)】被称为断言类型,这里`x`表示一个接口的类型的值和`T`表示一个类型
  • 类型断言:检查它操作对象的动态类型是否和断言的类型是否匹配
// 断言
type Animal interface {
	Say() // 函数签名:传入参数的类型,返回值的类型
}

type Cat struct {
	Name string
}

// 方法:将函数绑定到一个接收者类型上
func (c Cat) Say() {
	log.Println("i'm cat, my name is: ", c.Name)
}

func main() {
	var c Cat = Cat{
		Name: "kitty",
	}
	var a Animal

    // 类型变量赋值给接口
	a = c

	// 断言使用
	if a1, ok := a.(Cat); ok {
		// 判断当前接口类型如果是main.Cat类型,才执行main.Cat的方法
		a1.Say()
	}

}

猜你喜欢

转载自blog.csdn.net/weixin_40123451/article/details/120778289
go