Sobes.tech
Junior — Middle

É possível usar estruturas como chaves em um array associativo ou mapa?

sobes.tech IA

Resposta da IA

Em Go, as chaves em um mapa podem ser apenas tipos que suportam a operação de comparação (o operador ==). Estruturas podem ser usadas como chaves se todos os seus campos forem comparáveis. Por exemplo, se uma estrutura contém apenas tipos básicos (int, string, etc.), ela pode ser usada como chave. No entanto, se a estrutura contém slices, mapas ou funções, ela não pode ser usada como chave.

Exemplo:

package main

import "fmt"

type Point struct {
    X, Y int
}

func main() {
    m := make(map[Point]string)
    p := Point{X: 1, Y: 2}
    m[p] = "ponto"
    fmt.Println(m[p]) // saída: ponto
}

Se a estrutura contém campos não comparáveis, o compilador gerará um erro.