- `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()
}
}