Sobes.tech
Back to questions
Junior — Middle
82

Можно ли использовать структуры как ключи в associative array или map?

Answer from AI

sobes.tech AI

В Go ключами в map могут быть только те типы, которые поддерживают операцию сравнения (оператор ==). Структуры можно использовать как ключи, если все их поля сравнимы. Например, если структура содержит только базовые типы (int, string и т.п.), то её можно использовать как ключ. Если же структура содержит срезы, карты или функции, то использовать её как ключ нельзя.

Пример:

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]) // вывод: точка
}

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