接口提供了一种实现多态性的方式,使得可以通过接口来编写通用的代码,而不依赖于具体的类型。
虽然Java和Go都有接口和多态的概念,但它们的实现和使用方式有所不同,。
优点:
案例
package main
import "fmt"
// 定义接口
type Shape interface {
Area() float64
}
// 定义结构体(类型)- 圆形
type Circle struct {
Radius float64
}
// 实现接口方法 - 圆形
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
// 定义结构体(类型)- 正方形
type Square struct {
SideLength float64
}
// 实现接口方法 - 正方形
func (s Square) Area() float64 {
return s.SideLength * s.SideLength
}
func main() {
// 创建一个 Circle 类型的变量
circle := Circle{Radius: 2.5}
// 创建一个 Square 类型的变量
square := Square{SideLength: 3.0}
// 使用接口类型的变量存储 Circle 类型的变量
var shape Shape
shape = circle
// 调用接口方法
area := shape.Area()
fmt.Println("圆的面积是:", area)
// 使用接口类型的变量存储 Square 类型的变量
shape = square
// 调用接口方法
area = shape.Area()
fmt.Println("正方形的面积是:", area)
}