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]) // изход: точка
}
Ако структурата съдържа несравними полета, компилаторът ще даде грешка.