Golang的接口特性
-
接口组装
-
兼有python、c++的灵活性
-
拥有java的类型检查
-
接口由使用者定义
-
接口的实现是隐式的,只要实现接口里的方法就行
定义和使用接口
首先我们定义一个接口:
type Retriever interface {
Get(url string) string // 这个接口要实现Get方法
}
// 有这样一个函数,会使用Get方法
func download(r Retriever) string {
return r.Get("nothing")
}
然后,我们去实现它:
type retriever struct {
Contents string
}
// 需要实现Get方法
func (r retriever) Get(url string) string {
return r.Contents
}
现在,我们有一个接口Retriever
,它需要有一个Get
方法。我们又定义了一个
retriever
对象,这个对象实现了Get
方法,我们就可以说,retriever
实现了Retriever
这个接口,我们就可以用了。
func main() {
var r Retriever
r = retriever{"my retriever"}
fmt.Println(download(r))
}
// my retriever
// Process finished with exit code 0