什么是interface 简单的说,interface 是一组 method 的组合,我们通过 interface 来定义对象的一组行为。 如何实现interface? //Human 对象实现 Sayhi 方法 func (h *Human) SayHi() { fmt.Printf("Hi, I am %s you can call me on %s ", h.name, h.phone) } // Human 对象实现 Sing 方法 func (h *Human) Sing(lyrics string) { fmt.Println("La la, la la la, la la la la la...", lyrics) } //Human 对象实现 Guzzle 方法 func (h *Human) Guzzle(beerStein string) int{ return 1 } type Men interface { SayHi() Sing(lyrics string) Guzzle(beerStein string) int } 空interface(interface{}) 不包含任何的 method,正因为如此,所有的类型都实现了空 interface。 空 interface 对于描述起不到任何的作用(因为它不包含任何的 method),但是空 interface 在我们需要存储任意类型的数值的时候相当有用,因为它可以存储任意类型的数 值。它有点类似于 C 语言的 void*类型。 var a interface{} var i int = 5 s := "Hello world" // a 可以存储任意类型的数值 a = i a = s 一个函数把 interface{}作为参数,那么他可以接受任意类型的值作为参数,如果一个函数 返回 interface{},那么也就可以返回任意类型的值。是不是很有用啊!