什么是接口(Interface)
其实说白了,接口就是一种协议,统一一个标准。你要调用我,那你就必须实现我的这些方法。我不需要知道你是怎么实现的,但是你一定要实现。甚至在Objec-C当中都不叫interface,直接protocol。
我相信不少刚接触interface的人会跟我有一样的疑惑,我实现接口跟不实现接口没什么区别啊?反正都要实现这些方法。问题的误区就在于,接口的使用并不是单人开发模式的。你写接口你写实现,就不用写接口了。我写接口你实现,接口不就用上了。我不给你规定好了,你怎么知道该实现哪些内容呢。实际上也就是个“规范”。
我实现了某个服务,你可以来调用我的服务,但是调用我的服务之前你必须满足某些约束(实现方法),才能调用我写好了这些服务。这个时候接口的作用就出来了,接口约束了你必须满足的前置条件。看完下面的代码,你就明白了:
package main
import (
"fmt"
)
type Sorter interface {
Len() int
Less(i, j int) bool
Swap(i, j int)
}
func Sort(x Sorter) {
for i := 0; i < x.Len()-1; i++ {
for j := i + 1; j < x.Len(); j++ {
if x.Less(i, j) {
x.Swap(i, j)
}
}
}
}
type Xi []int
type Xs []string
func (p Xi) Len() int