接口
PPG007 ... 2021-12-26 Less than 1 minute
# 接口
接口定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。
Go 语言中接口是一种类型,一种抽象的类型,接口是一组方法的集合。
定义接口:
type Talk interface{
say()
}
1
2
3
2
3
实现并使用接口:
func (d *dog) say() {
fmt.Printf("%s says: %s\n", d.name, d.sound)
}
func (c *cat) say() {
fmt.Printf("%s says: %s\n", c.name, c.sound)
}
func main() {
var talk Talk
cat1 := &cat{
&animal{
name: "CAT1",
sound: "MIAO",
},
}
dog1 := &dog{
&animal{
name: "DOG1",
sound: "WANG",
},
}
talk = cat1
talk.say()
talk = dog1
talk.say()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 接口方法实现的接收者
如果接收者是指针类型,那么只能给接口变量传入指针类型,如果接收者是值类型,那么既可以传入值类型也可以传入指针类型。
# 空接口
任何类型都实现了空接口,空接口可以接受任意类型的函数参数。
使用空接口作为函数的参数可以接受任意类型的函数参数。
空接口作为 map 的值可以保存任意值的字典。