Sobes.tech
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) na map nil jest 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