Sobes.tech
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]) // изход: точка
}

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