Sobes.tech
Junior — Middle

W jakich przypadkach dozwolone jest wykonanie operacji wstawiania do Mapy, która nie została jeszcze zainicjalizowana?

sobes.tech AI

Odpowiedź od AI

W Go nie można wykonać operacji wstawiania do mapy, jeśli nie została ona zainicjalizowana (czyli jest nil), ponieważ spowoduje to panikę podczas działania programu.

Inicjalizacja mapy odbywa się za pomocą funkcji make:

m := make(map[string]int)
ms["key"] = 42 // poprawnie

Jeśli mapa jest nil, próba zapisania spowoduje panic:

var m map[string]int
m["key"] = 42 // panic: przypisanie do elementu w nil mapie

Wyjątek:

  • Jeśli mapa jest zadeklarowana, ale nie zainicjalizowana, można ją zainicjalizować bezpośrednio przed wstawieniem.
  • Czasami mapa jest inicjalizowana w konstruktorze lub funkcji i przekazywana dalej.

W związku z tym, wstawianie do nie zainicjalizowanej mapy jest dozwolone tylko po jej jawnej inicjalizacji przez make lub przypisaniu już istniejącej i zainicjalizowanej mapy. Bez tego operacja spowoduje błąd w czasie działania.