Назад к вопросам
Junior — Middle
76
Какие виды данных могут выступать в роли ключа в контейнере map?
Компании, где спрашивали
Цифровая Эволюция
Ответ от нейросети
sobes.tech 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}] = "A point"
Если попытаться использовать несравнимый тип в качестве ключа, компилятор выдаст ошибку.