Sobes.tech
Junior — Middle

Jakie typy danych są dozwolone jako klucze dla struktury mapy?

sobes.tech AI

Odpowiedź od AI

W Go klucze do map mogą być tylko tymi typami danych, które obsługują operację porównania (porównywalne). Oznacza to, że klucze mogą być:

  • Wartości logiczne (bool)
  • Liczby (int, float, complex itp.)
  • Ciągi znaków (string)
  • Wskaźniki
  • Interfejsy, jeśli typ dynamiczny obsługuje porównanie
  • Struktury, jeśli wszystkie ich pola są porównywalne

Nie można używać jako kluczy wycinków, map, funkcji i innych nieporównywalnych typów, ponieważ nie obsługują operatora ==.

Przykład:

m := make(map[string]int)
m["key"] = 42

// Struktura z porównywalnymi polami
type Point struct {
    X, Y int
}

m2 := make(map[Point]string)
m2[Point{1,2}] = "Punkt"