Golang接口

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
Licensed under CC BY-NC-SA 4.0
自认为是幻象波普星的来客
Built with Hugo
主题 StackJimmy 设计