接口类型是对其他类型行为的概括与抽象。通过使用接口,我们可以写出更加灵活和通用的函数,这些函数不用绑定在一个特定类型的实现上。
很多面向对象的编程语言都有接口的概念,Go语言的接口的独特之处在于它是隐式实现的。换句话说,对于一个具体的类型,无需声明它实现了哪些接口,只要提供接口所必需的方法即可。这种设计让你无需改变已有的类型的实现,就可以为这些类型创建新的接口,对于那些不能修改包的类型,这一点特别有用。
type 接口名称 interface {
方法名称 [返回值类型],
方法名称 [返回值类型]
}
package main
/* 定义接口类 */
type usb interface {
read() string
write(string) bool
}
/* 使用结构体实现接口 */
type phone struct {
Name string
}
func (phone phone) Read() string {
println(phone.Name, "read")
return "读取到的内容"
}
type computer struct {
Name string
}
func (computer computer) Write(content string) bool {
println(computer.Name, "写入", content)
return true
}
func main() {
phone := phone{"iphone"}
content := phone.Read()
println(content)
computer := computer{"mac book"}
computer.Write("写入123")
}