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)éscap(slice)segítségével. Egynilszelet esetén a hossz és a kapacitás 0. - Az
appendoperátor használata elemek hozzáadására. Ez automatikusan létrehoz egy új szeletet a lefoglalt memóriával, ha az eredeti szeletnil.
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