Sobes.tech
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. Това позволява на функцията да приема различни типове, обединени от общо поведение.