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.