Sobes.tech
Back to questions
Junior — Middle
86

Можно ли использовать структуру данных как ключ в карте или хеш-таблице?

Companies where asked
Startribe
МТС DigitalМТС Digital

Answer from AI

sobes.tech AI

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

Например, структуры, содержащие только базовые типы (int, string, bool и т.п.) или другие сравнимые структуры, могут быть ключами. Однако структуры, содержащие срезы, карты или функции, не могут быть ключами, так как эти типы несравнимы.

Пример:

package main

import "fmt"

type Point struct {
    X, Y int
}

func main() {
    m := make(map[Point]string)
    p := Point{X: 1, Y: 2}
    m[p] = "точка"
    fmt.Println(m[p]) // вывод: точка
}

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