Sobes.tech
Junior — Middle

Czy można używać struktur jako kluczy w tablicy asocjacyjnej lub mapie?

sobes.tech AI

Odpowiedź od AI

W Go, klucze w mapie mogą być tylko typami obsługującymi operację porównania (operator ==). Struktury mogą być używane jako klucze, jeśli wszystkie ich pola są porównywalne. Na przykład, jeśli struktura zawiera tylko podstawowe typy (int, string itp.), można ją użyć jako klucz. Jeśli jednak struktura zawiera slices, mapy lub funkcje, nie można jej używać jako klucza.

Przykład:

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] = "punkt"
    fmt.Println(m[p]) // wyjście: punkt
}

Jeśli struktura zawiera pola nieporównywalne, kompilator zgłosi błąd.