Sobes.tech
Назад к вопросам
Senior
5

Какие типы данных могут быть ключом map?

Компании, где спрашивали
Магнит Тех

Ответ от нейросети

sobes.tech AI

В Go ключом для map могут быть только те типы, которые поддерживают операцию сравнения на равенство (== и !=). Это связано с тем, что map использует хеширование и сравнение ключей для поиска значений.

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

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

Нельзя использовать:

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

Пример использования map с ключом типа struct:

package main
import "fmt"

type Point struct {
    X, Y int
}

func main() {
    m := make(map[Point]string)
    m[Point{1, 2}] = "A"
    fmt.Println(m[Point{1, 2}]) // Выведет "A"
}

Если попытаться использовать несравнимый тип в качестве ключа, компилятор выдаст ошибку.