Junior — Middle
Обяснете концепцията за сума от типове в езика Go и нейното използване
sobes.tech AI
Отговор от AI
В езика Go концепцията за тип сума (sum type) се реализира чрез интерфейси и позволява да се описват променливи, които могат да приемат стойности от различни типове, обединени чрез общ интерфейс.
Типът сума е начин да се изрази, че стойността може да бъде един от няколко типа, което е полезно за обработка на различни варианти на данни на едно място.
Пример за използване:
package main
import "fmt"
// Определяме интерфейс, който обединява различни типове
type Shape interface {
Area() float64
}
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
type Rectangle struct {
Width, Height float64
}
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
func printArea(s Shape) {
fmt.Println("Площ:", s.Area())
}
func main() {
var s Shape
s = Circle{Radius: 5}
printArea(s)
s = Rectangle{Width: 3, Height: 4}
printArea(s)
}
Тук интерфейсът Shape действа като тип сума за Circle и Rectangle. Това позволява на функцията да приема различни типове, обединени от общо поведение.