Junior — Middle
Може ли да се използва структура от данни като ключ в карта или хеш таблица?
sobes.tech AI
Отговор от 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]) // изход: точка
}
Ако структурата съдържа несравними полета, компилаторът ще даде грешка при опит да я използва като ключ в карта.