62 lines
1.0 KiB
Go
62 lines
1.0 KiB
Go
package main
|
||
|
||
import "fmt"
|
||
|
||
// 定义一个接口
|
||
type Shape interface {
|
||
Area() float64
|
||
}
|
||
|
||
// 定义一个结构体:Rectangle
|
||
type Rectangle struct {
|
||
Width, Height float64
|
||
}
|
||
|
||
// 实现接口方法:Area
|
||
func (r Rectangle) Area() float64 {
|
||
return r.Width * r.Height
|
||
}
|
||
|
||
// 定义另一个结构体:Circle
|
||
type Circle struct {
|
||
Radius float64
|
||
}
|
||
|
||
// 实现接口方法:Area
|
||
func (c Circle) Area() float64 {
|
||
return 3.14 * c.Radius * c.Radius
|
||
}
|
||
|
||
func main() {
|
||
// 创建接口类型的切片
|
||
shapes := []Shape{
|
||
Rectangle{Width: 10, Height: 5},
|
||
Circle{Radius: 7},
|
||
}
|
||
|
||
shapes2 := []Shape{
|
||
Rectangle{Width: 20, Height: 10},
|
||
Circle{Radius: 14},
|
||
Rectangle{Width: 30, Height: 15},
|
||
Rectangle{5, 5},
|
||
}
|
||
|
||
// 遍历并调用接口方法
|
||
for _, shape := range shapes {
|
||
fmt.Printf("Shape Area: %.2f\n", shape.Area())
|
||
}
|
||
|
||
// i := 0
|
||
// for {
|
||
// fmt.Printf("Shape Area: %.2f\n", shapes2[i].Area())
|
||
// i++
|
||
// if i >= len(shapes2) {
|
||
// break
|
||
// }
|
||
// }
|
||
|
||
for _, shape := range shapes2 {
|
||
fmt.Printf("%.2f\n", shape.Area())
|
||
}
|
||
}
|