Junior — Middle
Jakie działania są dozwolone z zmienną typu Map, która nie została jeszcze zainicjalizowana?
sobes.tech AI
Odpowiedź od AI
W Go, zmienna typu map domyślnie ma wartość nil, jeśli nie została zainicjalizowana.
Z map nil dozwolone są następujące działania:
- Odczyt wartości po kluczu — zwróci wartość zerową typu i flagę braku klucza.
- Sprawdzenie istnienia klucza za pomocą operatora
value, ok := map[key].
Operacje niedozwolone:
- Zapisy (przypisanie wartości do klucza) spowodują panic.
- Wywołanie funkcji modyfikujących mapę (np.
delete) namapniljest bezpieczne i nie wywoła panic.
Przykład:
var m map[string]int // m == nil
v, ok := m["key"] // ok == false, v == 0
// m["key"] = 10 // panic: przypisanie do wpisu w mapie nil
delete(m, "key") // bezpieczne, nic nie robi
Aby używać mapy do zapisu, należy ją zainicjalizować, np. za pomocą make:
m = make(map[string]int)
m["key"] = 10 // teraz działa