Middle
Jakie typy danych można używać jako kluczy?
sobes.tech AI
Odpowiedź od AI
W języku Go klucze w mapie mogą być tylko typami obsługującymi operację porównania (==). Wynika to z faktu, że do wyszukiwania klucza w tablicy haszującej konieczne jest porównanie kluczy na równość.
Typy, które można używać jako klucze:
- Typy podstawowe:
int,float64,string,boolitp. - Wskaźniki
- Struktury, jeśli wszystkie ich pola są porównywalne
- Tablice, jeśli elementy są porównywalne
Typy, których nie można używać jako kluczy:
- Slicing (
slice) - Mapy (
map) - Funkcje
Jest to związane z tym, że te typy nie obsługują porównania za pomocą ==.
Przykład:
m := make(map[string]int)
m["key"] = 42
// Struktura z porównywalnymi polami
type Point struct {
X, Y int
}
m2 := make(map[Point]string)
m2[Point{1, 2}] = "Punkt"
Jeśli spróbujesz użyć slice lub mapy jako klucza, kompilator zgłosi błąd.