Sobes.tech
Junior — Middle

Wyjaśnij koncepcję sumy typów w języku Go i jej zastosowanie

sobes.tech AI

Odpowiedź od AI

W języku Go koncepcja typu sum (sum type) jest realizowana za pomocą interfejsów i pozwala opisać zmienne, które mogą przyjmować wartości z różnych typów, połączonych wspólnym interfejsem.

Typ sumy to sposób wyrażenia, że wartość może być jednym z kilku typów, co jest przydatne do obsługi różnych wariantów danych w jednym miejscu.

Przykład użycia:

package main
import "fmt"

// Definiujemy interfejs, który łączy różne typy
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("Pole:", s.Area())
}

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

Tutaj, interfejs Shape działa jako typ sumy dla Circle i Rectangle. To pozwala funkcji przyjmować różne typy połączone wspólnym zachowaniem.