Sobes.tech
Junior — Middle

Ce acțiuni sunt permise atunci când lucrați cu un slice în Go dacă acesta nu a fost inițializat explicit?

sobes.tech AI

Răspuns de la AI

În Go, dacă un slice nu a fost inițializat explicit (adică are valoarea nil), se pot efectua următoarele acțiuni:

  • Verificarea dacă este nil (de exemplu, if slice == nil), ceea ce este util pentru a determina dacă slice-ul a fost inițializat.
  • Obținerea lungimii și capacității folosind len(slice) și cap(slice). Pentru un slice nil, lungimea și capacitatea sunt 0.
  • Utilizarea operatorului append pentru a adăuga elemente. append va crea automat un nou slice cu memorie alocată dacă slice-ul original este nil.

Totuși, nu se poate accesa elementele slice-ului după index dacă acesta este nil sau gol, deoarece va provoca o panică.

Exemplu:

var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // acum s este inițializat și conține [1]