Sobes.tech
Junior — Middle

Jakie działania są dozwolone podczas pracy z slice'em w Go, jeśli nie został on jawnie zainicjalizowany?

sobes.tech AI

Odpowiedź od AI

W Go, jeśli slice nie został jawnie zainicjalizowany (czyli ma wartość nil), można wykonać następujące działania:

  • Sprawdzić, czy jest nil (np. if slice == nil), co jest przydatne do określenia, czy slice został zainicjalizowany.
  • Uzyskać długość i pojemność za pomocą len(slice) i cap(slice). Dla nil-slice długość i pojemność są równe 0.
  • Używać operatora append do dodawania elementów. append automatycznie utworzy nowy slice z przydzieloną pamięcią, jeśli oryginalny slice jest nil.

Jednak nie można odwołać się do elementów slice po indeksie, jeśli jest nil lub pusty, ponieważ spowoduje to panic.

Przykład:

var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // teraz s jest zainicjalizowany i zawiera [1]