Published 2020-05-27

Go - 接口

在Go语言中,接口(Interface)是一种类型,它定义了一组方法的契约。接口定义了方法的集合,而不关心方法的具体实现。接口提供了一种抽象的方式来描述对象的行为。

Go中的接口由一组方法签名组成,方法签名定义了方法的名称、参数列表和返回值类型。一个类型只要实现了接口中定义的所有方法,就被认为是实现了该接口。通过这种方式,接口实现了多态的特性,即不同类型的对象可以以相同的接口类型进行处理。

接口定义

type 接口类型名 interface{
    方法名1(参数列表1) 返回值列表1
    方法名2(参数列表2) 返回值列表2
    …
}

接口实现

type 类型名 struct{
    //字段
}
//实现接口方法
func (变量名 类型名) 方法名1(参数列表1) 返回值列表1{
    //方法体
}
func (变量名 类型名) 方法名2(参数列表2) 返回值列表2{
    //方法体
}

接口的实现是隐式的,不需要显式声明。只要一个类型实现了接口中定义的所有方法,即可视为实现了该接口。例如:

type Animal interface {
    Speak() string
}

type Dog struct {}

func (d Dog) Speak() string {
    return "Woof!"
}

func main() {
    var animal Animal
    animal = Dog{}
    fmt.Println(animal.Speak()) // 输出: "Woof!"
}

在上面的例子中,我们定义了一个 Animal 接口,只有一个 Speak 方法。然后,我们创建了一个 Dog 结构体,并为 Dog 类型实现了 Speak 方法。在 main 函数中,我们将 Dog 类型赋值给 Animal 类型的变量 animal,并调用了 Speak 方法。 接口的特点和用途包括: