Sobes.tech
Junior — Middle

Jaka jest różnica między mapą z wartością null a slice'em zawierającym wartość null?

sobes.tech AI

Odpowiedź od AI

W Go, mapa (mapa) z wartością zerową to mapa, która nie została zainicjalizowana i jest równa nil. Próba zapisania do takiej mapy spowoduje panic.

Slicing z wartością zerową to nil-slice, który nie wskazuje na tablicę i ma długość oraz pojemność 0. Można go bezpiecznie używać, na przykład do odczytu lub przekazywania do funkcji.

Kluczowe różnice:

  • map == nil oznacza, że mapa nie została zainicjalizowana i nie może przyjmować elementów.
  • slice == nil oznacza, że slice jest pusty i nie wskazuje na tablicę, ale można go używać do odczytu (będzie pusty) i przekazywania.

Przykład:

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

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // teraz slice jest zainicjalizowany

W związku z tym, mapa nil nie nadaje się do zapisu, a nil-slice jest bezpieczny do odczytu i rozszerzania.