1.4 KiB
1.4 KiB
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 验证答案。