Назад к вопросам
Middle+
3
Можно ли использовать другую map или slice как ключ в map?
Компании, где спрашивали
WaterWal
Ответ от нейросети
sobes.tech AI
В Go ключом в map могут быть только типы, которые поддерживают операцию сравнения (оператор ==). Это значит, что использовать map или slice как ключ нельзя, потому что они не сравниваются по значению.
Если нужно использовать составной ключ, можно:
- Использовать строку или другой примитивный тип, который формируется из значений map или slice (например, сериализовать в JSON или использовать конкатенацию).
- Определить собственную структуру с полями, которые сравнимы, и использовать её как ключ.
Пример с использованием структуры как ключа:
package main
import "fmt"
type Key struct {
ID int
Name string
}
func main() {
m := make(map[Key]string)
k := Key{ID: 1, Name: "test"}
m[k] = "value"
fmt.Println(m[k])
}
Таким образом, нельзя напрямую использовать map или slice как ключ, но можно обойти это ограничение с помощью других подходов.