用goland语言定义接口,综合运用结构体、方法、接口求解圆、矩形、三角形等图形周长和面积
时间: 2023-10-20 14:34:00 浏览: 123
好的,下面是一个示例代码,实现了圆、矩形、三角形等图形的周长和面积计算:
```go
package main
import (
"fmt"
"math"
)
type Shape interface {
Area() float64
Perimeter() float64
}
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return math.Pi * c.Radius * c.Radius
}
func (c Circle) Perimeter() float64 {
return 2 * math.Pi * c.Radius
}
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)
}
type Triangle struct {
a float64
b float64
c float64
}
func (t Triangle) Area() float64 {
p := (t.a + t.b + t.c) / 2
return math.Sqrt(p * (p - t.a) * (p - t.b) * (p - t.c))
}
func (t Triangle) Perimeter() float64 {
return t.a + t.b + t.c
}
func main() {
circle := Circle{Radius: 5}
fmt.Println("Circle:")
fmt.Printf("Area: %.2f\n", circle.Area())
fmt.Printf("Perimeter: %.2f\n", circle.Perimeter())
rectangle := Rectangle{Width: 4, Height: 5}
fmt.Println("Rectangle:")
fmt.Printf("Area: %.2f\n", rectangle.Area())
fmt.Printf("Perimeter: %.2f\n", rectangle.Perimeter())
triangle := Triangle{a: 3, b: 4, c: 5}
fmt.Println("Triangle:")
fmt.Printf("Area: %.2f\n", triangle.Area())
fmt.Printf("Perimeter: %.2f\n", triangle.Perimeter())
}
```
这段代码定义了一个 `Shape` 接口,包含了 `Area()` 和 `Perimeter()` 两个方法,分别用于计算图形的面积和周长。接着,定义了三个实现了 `Shape` 接口的结构体:`Circle`、`Rectangle` 和 `Triangle`,分别表示圆、矩形和三角形。每个结构体中都实现了 `Area()` 和 `Perimeter()` 方法,具体的计算逻辑按照各自的数学公式实现即可。
在 `main()` 函数中,我们创建了一个圆、一个矩形和一个三角形的实例,并且分别调用了它们的 `Area()` 和 `Perimeter()` 方法,输出了它们的面积和周长。
阅读全文