Sobes.tech
Junior — Middle

Могат ли да се използват структури като ключове в асоциативен масив или карта?

sobes.tech AI

Отговор от AI

В Go, ключовете в карта могат да бъдат само от типове, които поддържат операцията за сравнение (оператор ==). Структурите могат да се използват като ключове, ако всички техни полета са сравними. Например, ако структурата съдържа само базови типове (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]) // изход: точка
}

Ако структурата съдържа несравними полета, компилаторът ще даде грешка.