go语言接口:
go语言的接口设计是非侵入式的,接口的编写者无需知道接口被那些类型实现。而接口实现者只需要知道实现的是什么样子的接口,但无须指明实现哪一个接口。不像其他语言需要用implement来指出实现了哪个接口。有几个需要注意的地方:
- interface本身也是一种类型,可以定义一组方法,但是接口中不能包含任何的变量
- 必须实现了接口中的所有方法,才能调用接口
- 实现接口的方法必须和接口中定义的方法格式一致,包括函数名和返回值等。
多态:
一种的事物的多种形态,都可以按照统一的接口进行操作。
理解:比如go语言sort包中提供了一个排序的Sort接口,它可以对整数,浮点数,字符串等进行排序,只要实现接口中定义的下面三个方法,就可以调用Sort方法进行排序,不用每一种类型都去定义一种实现的方法。
我们从go网站上面可以查到Sort方法是这样:func Sort(data Interface)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
type Interface interface {
// Len is the number of elements in the collection.
// Len 为集合内元素的总数
Len() int
// Less reports whether the element with
// index i should sort before the element with index j.
//
// Less 返回索引为 i 的元素是否应排在索引为 j 的元素之前。
Less(i, j int) bool
// Swap swaps the elements with indexes i and j.
// Swap 交换索引为 i 和 j 的元素
Swap(i, j int)
}
|
……