Sobes.tech
Назад к вопросам
Junior — Middle
84

Объясните концепцию Тип-суммы в языке Go и ее использование

Ответ от нейросети

sobes.tech 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("Area:", s.Area())
}

func main() {
    var s Shape
    s = Circle{Radius: 5}
    printArea(s)
    s = Rectangle{Width: 3, Height: 4}
    printArea(s)
}

Здесь интерфейс Shape выступает как тип-сумма для Circle и Rectangle. Это позволяет функции принимать разные типы, объединённые общим поведением.