结构体

This commit is contained in:
2025-04-10 17:45:32 +08:00
parent 087e1ba3a1
commit 3c981f9315
2 changed files with 108 additions and 4 deletions

View File

@@ -1,5 +1,61 @@
package main
func main() {
// TODO
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())
}
}