Sobes.tech
Middle

Какви типове данни могат да се използват като ключове?

sobes.tech AI

Отговор от AI

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

Типове, които могат да се използват като ключове:

  • Примитивни типове: int, float64, string, bool и др.
  • Посочващи типове
  • Структури, ако всички техни полета са сравними
  • Масиви, ако елементите им са сравними

Типове, които не могат да се използват като ключове:

  • Срезове (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}] = "Точка"

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