- 答案: 接口是一种抽象类型,用于定义对象的行为。与其他语言不同的是,Go语言中的接口是隐式实现的,即对象只需实现接口中定义的方法,而无需显式声明实现了某个接口。\
在 Go 语言中,接口(interface)是一种抽象类型,它定义了一组方法的集合。接口提供了一种方式来指定对象应该具有的行为,而不需要关心具体类型。任何类型只要实现了接口中定义的方法,就被认为是该接口的实现类型。
接口的定义非常简单,只需要使用 type
关键字加上 interface{}
关键字即可。接口中定义了一组方法签名,但不包含方法的具体实现。例如:
package main
import "fmt"
// 定义一个接口
type Shape interface {
Area() float64
Perimeter() float64
}
// 定义一个矩形类型
type Rectangle struct {
width, height float64
}
// 实现 Shape 接口中的 Area 方法
func (r Rectangle) Area() float64 {
return r.width * r.height
}
// 实现 Shape 接口中的 Perimeter 方法
func (r Rectangle) Perimeter() float64 {
return 2*r.width + 2*r.height
}
func main() {
// 创建一个矩形对象
rect := Rectangle{width: 5, height: 3}
// 将矩形对象赋值给接口类型
var shape Shape = rect
// 调用接口方法
area := shape.Area()
perimeter := shape.Perimeter()
fmt.Println("Area:", area)
fmt.Println("Perimeter:", perimeter)
}
在这个例子中,我们定义了一个 Shape
接口,包含 Area()
和 Perimeter()
两个方法。然后,我们定义了一个 Rectangle
结构体,并分别实现了 Shape
接口中的两个方法。在 main()
函数中,我们创建了一个 Rectangle
类型的对象,并将其赋值给了 Shape
类型的变量。通过这种方式,我们可以调用 Shape
接口中定义的方法,实现了多态的效果。