go 语言接口

接口概念

接口类型是对其他类型行为的概括与抽象。通过使用接口,我们可以写出更加灵活和通用的函数,这些函数不用绑定在一个特定类型的实现上。

很多面向对象的编程语言都有接口的概念,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")

}