go语言接口的实现
接口可以很好的封装有同一类功能的方法
首先在具体实现里面定义自己的实现,这边定义了2个
type Cat struct{}
func (c *Cat) Call() {
fmt.Println("miao,miao...")
}
func (c *Cat) Eat() {
fmt.Println("fish")
}
///////
type Dog struct{}
func (d *Dog) Call() {
fmt.Println("wang,wang...")
}
func (d *Dog) Eat() {
fmt.Println("meat")
}
然后定义接口
type Animal interface {
Call()
Eat()
}
具体实现
func TestReflect(t *testing.T) {
d := Dog{}
d.Call()
d.Eat()
c := Cat{}
c.Call()
c.Eat()
}
输出内容:
wang,wang...
meat
miao,miao...
fish
实际调用场景应该是这样的,会将多个实例放在字典映射里面,然后动态调用
func TestReflect(t *testing.T) {
animalMap := map[string]Animal{}
animalMap["cat"] = &Cat{}
animalMap["dog"] = &Dog{}
animalMap["cat"].Call()
animalMap["cat"].Eat()
}

浙公网安备 33010602011771号