Files
go-basics/stage06-oop/01-interfaces/README.md
T

75 lines
1.4 KiB
Markdown
Raw Normal View History

2026-03-14 19:03:12 +08:00
# 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` 验证答案。