# 01-interfaces - 接口定义与实现 ## 知识点讲解 ### 接口定义 ```go type Shape interface { Area() float64 Perimeter() float64 } ``` ### 接口实现 ```go 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中接口是隐式实现的,不需要显式声明 ### 多态 ```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 ``` ### 空接口 ```go var any interface{} any = 10 any = "hello" any = []int{1, 2, 3} ``` ### 重要提示 - 接口定义一组方法签名 - 任何类型只要实现了接口的所有方法,就自动实现了该接口 - 空接口 `interface{}` 可以持有任何类型的值 - 接口类型可以包含零个或多个方法 ## 学习目标 完成本练习后,你将: - ✅ 掌握接口的定义方式 - ✅ 学会实现接口 - ✅ 理解多态的概念 - ✅ 了解空接口的用法 ## 练习说明 打开 `main.go`,根据注释提示填充代码,完成后运行 `go test -v` 验证答案。