Sobes.tech
Junior — Middle

Care este diferența dintre o hartă cu valoare nulă și o felie care conține o valoare nulă?

sobes.tech AI

Răspuns de la AI

În Go, o hartă (map) cu valoare zero este o hartă care nu a fost inițializată și este egală cu nil. Încercarea de a scrie într-o astfel de hartă va duce la panic.

Un slice cu valoare zero este un slice nil, care nu indică către un array și are lungimea și capacitatea de 0. Poate fi utilizat în siguranță, de exemplu, pentru citire sau transmitere către funcții.

Diferențe cheie:

  • map == nil înseamnă că harta nu a fost inițializată și nu poate accepta elemente.
  • slice == nil înseamnă că slice-ul este gol și nu indică către un array, dar poate fi utilizat pentru citire (va fi gol) și transmitere.

Exemplu:

var m map[string]int // m == nil
// m["key"] = 1 // panic: atribuire într-o hartă nil

var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // acum slice-ul este inițializat

Prin urmare, o hartă nil nu este potrivită pentru scriere, iar un slice nil este sigur pentru citire și extindere.