1.空接口
interface{}
int, string. float32,float64.struct…都实现了interface{}
package main
import "fmt"
// interface{}是一个万能数据类型
func MyFunc(arg interface{}) {
fmt.Println("my func is running")
fmt.Println(arg)
// interface如何区分 此时引用的底层数据类型到底是什么
// go中 给intterface{} 提供了"断言"的机制
value, ok := arg.(string)
if !ok {
fmt.Println("arg is not string type ")
} else {
fmt.Println("arg is string type, value =", value)
fmt.Printf("value type is %T\n", value)
}
}
// 具体的类
type Cat struct {
color string
}
// 不需要继承,直接重写方法即可, 一个接口定义了2个类, 即AnimalIF为父类
func main() {
cat := Cat{"大黄狗"}
MyFunc(cat)
MyFunc(1)
MyFunc("work")
}