请用go语言实现一个形状结构体,包含一个形状名称字段以及一个函数类型成员,函数成员用来存储各种求面积的方法。结构体的求面积方法会根据形状字段值来执行不同的求面积函数。
时间: 2023-08-06 17:07:44 浏览: 78
实现的go语言的结构体排序
好的,以下是用Go语言实现的代码:
```go
type Shape struct {
Name string
Area func() float64
}
func (s Shape) GetArea() float64 {
return s.Area()
}
func NewShape(name string, areaFunc func() float64) Shape {
return Shape{
Name: name,
Area: areaFunc,
}
}
func main() {
// 定义一个圆形结构体
circle := NewShape("Circle", func() float64 {
// 这里是圆形面积的计算公式
return math.Pi * math.Pow(10, 2)
})
// 定义一个矩形结构体
rectangle := NewShape("Rectangle", func() float64 {
// 这里是矩形面积的计算公式
return 10 * 20
})
// 调用求面积方法
fmt.Println(circle.GetArea())
fmt.Println(rectangle.GetArea())
}
```
这段代码定义了一个 `Shape` 结构体,包含一个形状名称字段和一个函数类型成员 `Area`,用来存储各种求面积的方法。`GetArea` 方法用来根据形状字段值来执行不同的求面积函数。`NewShape` 函数用来创建一个新的 `Shape` 结构体,需要传入形状名称和面积计算函数。在 `main` 函数中,我们创建了一个圆形结构体和一个矩形结构体,并调用了它们的求面积方法。
阅读全文