Sobes.tech
Junior — Middle

Co się dzieje, jeśli utworzysz slice z wartością zerową i jakie operacje są z nim dozwolone?

sobes.tech AI

Odpowiedź od AI

W Go, slice z wartością zerową to nil slice. Nie wskazuje na żaden tablica i ma długość i pojemność równą zero.

Dozwolone operacje na takim slice:

  • Uzyskanie długości i pojemności (len(slice) == 0, cap(slice) == 0)
  • Iteracja po slice (pętla po prostu się nie wykona)
  • Dodawanie elementów za pomocą append, co utworzy nowy slice z przydzieloną pamięcią

Przykład:

var s []int // nil slice
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // teraz s nie jest nil, zawiera jeden element

Nie można odwołać się do elementów po indeksie, ponieważ slice jest pusty i spowoduje to panic.