Sobes.tech
Junior — Middle

Какви видове данни могат да служат като ключ в контейнер map?

sobes.tech AI

Отговор от AI

В Go ключът в map може да бъде само от типове данни, които са сравними (comparable). Това означава, че за ключа трябва да е дефиниран операторът ==.

Подходящи типове ключове:

  • Булеви стойности (bool)
  • Числа (int, float64, uint8 и т.н.)
  • Стрийнове (string)
  • Указатели
  • Канали
  • Интерфейси, ако динамичният тип е сравним
  • Структури, ако всички полета са сравними

Не може да се използва като ключ:

  • Срезове (slice)
  • Карти (map)
  • Функции

Пример:

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

// Структура с сравними полета
type Point struct {
    X, Y int
}

m2 := make(map[Point]string)
m2[Point{1,2}] = "Точка"

Ако се опита да се използва несравним тип като ключ, компилаторът ще даде грешка.