Sobes.tech
Junior — Middle

Explique o conceito de soma de tipos na linguagem Go e seu uso

sobes.tech IA

Resposta da IA

Na linguagem Go, o conceito de tipo soma (sum type) é implementado através de interfaces e permite descrever variáveis que podem assumir valores de diferentes tipos, unidos por uma interface comum.

Um tipo soma é uma forma de expressar que um valor pode ser de um de vários tipos, o que é útil para lidar com diferentes variantes de dados em um único lugar.

Exemplo de uso:

package main
import "fmt"

// Define uma interface que combina diferentes tipos
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("Área:", s.Area())
}

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

Aqui, a interface Shape atua como um tipo soma para Circle e Rectangle. Isso permite que a função aceite diferentes tipos unidos por um comportamento comum.