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