Sobes.tech
Junior — Middle

Milyen műveletek megengedettek Go-ban, ha a slice nincs kifejezetten inicializálva?

sobes.tech MI

Válasz az MI-től

Go-ban, ha a szelet (slice) nem volt kifejezetten inicializálva (azaz, nil értékkel rendelkezik), akkor a következő műveletek végezhetők el:

  • Ellenőrizni, hogy nil-e (például, if slice == nil), ami hasznos annak meghatározására, hogy a szelet inicializálva van-e.
  • A hossz és kapacitás lekérdezése len(slice) és cap(slice) segítségével. Egy nil szelet esetén a hossz és a kapacitás 0.
  • Az append operátor használata elemek hozzáadására. Ez automatikusan létrehoz egy új szeletet a lefoglalt memóriával, ha az eredeti szelet nil.

Azonban nem lehet index szerint hozzáférni a szelet elemeihez, ha az nil vagy üres, mert ez pánikot okoz.

Példa:

var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // most s inicializálva van és tartalmazza az [1] értéket