go语言接口的实现

接口可以很好的封装有同一类功能的方法

首先在具体实现里面定义自己的实现,这边定义了2个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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")
}

  

然后定义接口

1
2
3
4
type Animal interface {
    Call()
    Eat()
}

  

具体实现

1
2
3
4
5
6
7
8
9
func TestReflect(t *testing.T) {
    d := Dog{}
    d.Call()
    d.Eat()
 
    c := Cat{}
    c.Call()
    c.Eat()
}

  

输出内容:

wang,wang...
meat
miao,miao...
fish
 
实际调用场景应该是这样的,会将多个实例放在字典映射里面,然后动态调用
1
2
3
4
5
6
7
func TestReflect(t *testing.T) {
    animalMap := map[string]Animal{}
    animalMap["cat"] = &Cat{}
    animalMap["dog"] = &Dog{}
    animalMap["cat"].Call()
    animalMap["cat"].Eat()
}

  

 

posted @   一个和🔥有缘的人  阅读(431)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示