У меня есть интерфейс
type Shape interface {
area() float32
circumference() float32
}
Я хочу создать различные формы, такие как круг и прямоугольник, для круга мне нужно знать радиус, а для прямоугольника 2 стороны.Таким образом, код для каждого из них выглядит следующим образом:
type DataCircle struct {
radius float
}
(*DataCircle) area() float32 {
return 3.14 * DataCircle.radius * DataCircle.radius;
}
(*DataCircle) circumference() float32 {
return 2 * 3.14 * DataCircle.radius;
}
Аналогично у нас есть код для прямоугольника, который реализует интерфейс Shape, со следующей структурой
type DataRectangle struct {
side1 float
side2 float
}
Я хочу создать многоразные прямоугольники и много разных кругов, каждый из которых имеет разные радиусы / стороны.В конце я хочу поместить их в один массив и иметь возможность сделать что-то вроде следующего:
for _, shape := range all_shapes_in_array {
fmt.Printf("%f %f", shape.area(), shape.circumference())
}
В обычном объектно-ориентированном языке это довольно просто, но как мне это сделать на Голанге?