Junior — Middle
Jakie typy danych mogą pełnić rolę klucza w kontenerze map?
sobes.tech AI
Odpowiedź od AI
W Go kluczem w mapie mogą być tylko typy danych, które są porównywalne (comparable). Oznacza to, że dla klucza musi być zdefiniowany operator ==.
Odpowiednie typy kluczy:
- Wartości boolowskie (
bool) - Liczby (
int,float64,uint8itd.) - Ciągi znaków (
string) - Wskaźniki
- Kanały
- Interfejsy, jeśli typ dynamiczny jest porównywalny
- Struktury, jeśli wszystkie pola są porównywalne
Nie można używać jako klucza:
- Slicing (
slice) - Map (
map) - Funkcji
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ć typu nieporównywalnego jako klucza, kompilator zgłosi błąd.