Sobes.tech
Назад к вопросам
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 как ключ, но можно обойти это ограничение с помощью других подходов.