Files
go-basics/stage06-oop/01-interfaces
2026-03-14 19:03:12 +08:00
..
2026-03-14 19:03:12 +08:00
2026-03-14 19:03:12 +08:00
2026-03-14 19:03:12 +08:00

01-interfaces - 接口定义与实现

知识点讲解

接口定义

type Shape interface {
    Area() float64
    Perimeter() float64
}

接口实现

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

注意:Go中接口是隐式实现的,不需要显式声明

多态

func printShapeInfo(s Shape) {
    fmt.Printf("面积: %.2f\n", s.Area())
    fmt.Printf("周长: %.2f\n", s.Perimeter())
}

rect := Rectangle{Width: 10, Height: 5}
circle := Circle{Radius: 7}

printShapeInfo(rect)    // 可以传递Rectangle
printShapeInfo(circle)  // 也可以传递Circle

空接口

var any interface{}
any = 10
any = "hello"
any = []int{1, 2, 3}

重要提示

  • 接口定义一组方法签名
  • 任何类型只要实现了接口的所有方法,就自动实现了该接口
  • 空接口 interface{} 可以持有任何类型的值
  • 接口类型可以包含零个或多个方法

学习目标

完成本练习后,你将:

  • ✅ 掌握接口的定义方式
  • ✅ 学会实现接口
  • ✅ 理解多态的概念
  • ✅ 了解空接口的用法

练习说明

打开 main.go,根据注释提示填充代码,完成后运行 go test -v 验证答案。