Sobes.tech
Junior — Middle

Qual é o papel principal do primitive Union e em que situações é utilizada?

sobes.tech IA

Resposta da IA

Em Go, não existe um primitive chamado Union propriamente dito, mas funções semelhantes desempenham o papel das interfaces e tipos usando switches de tipo. A ideia principal de uma union é a capacidade de armazenar o valor de um de vários tipos numa única variável. Em linguagens onde existe Union (por exemplo, C), isso economiza memória e permite trabalhar com diferentes tipos de dados no mesmo local.

Em Go, para esses propósitos, usam-se interfaces, por exemplo, interface{}, e depois, com assertions de tipo ou switches de tipo, determina-se o tipo específico em tempo de execução.

Exemplo de uso de uma interface para imitar uma union:

func process(value interface{}) {
    switch v := value.(type) {
    case int:
        fmt.Println("valor int", v)
    case string:
        fmt.Println("valor string", v)
    default:
        fmt.Println("tipo desconhecido")
    }
}

Utiliza-se esta construção quando é necessário processar dados de diferentes tipos numa mesma função ou estrutura, por exemplo, ao fazer parsing de JSON com diferentes tipos de valores possíveis.