Sobes.tech
Junior — Middle

Ako správne vytvárať a inicializovať slices v Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go sú rezy (slices) dynamické dátové štruktúry, ktoré predstavujú odkaz na pole s určenou dĺžkou a kapacitou.

Rezy je možné vytvárať a inicializovať rôznymi spôsobmi:

  1. Deklarácia rezu bez inicializácie (nil-rez):
var s []int // nil-rez, dĺžka a kapacita 0
  1. Inicializácia rezu pomocou literálu:
s := []int{1, 2, 3} // rez dĺžky 3
  1. Vytvorenie rezu pomocou funkcie make:
s := make([]int, 5) // rez dĺžky 5, naplnený nulami
s2 := make([]int, 3, 10) // dĺžka 3, kapacita 10

Funkcia make alokuje za scénou pole a vráti rez, ktorý na ne ukazuje.

  1. Vytvorenie rezu z poľa:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // rez prvkov s indexmi 1,2,3

Je dôležité si zapamätať, že rezy sú odkazy na polia, takže zmena prvkov v reze mení aj pôvodné pole.

Príklad použitia:

package main
import "fmt"

func main() {
    s := make([]int, 3, 5)
    fmt.Println(s)       // [0 0 0]
    fmt.Println(len(s))  // 3
    fmt.Println(cap(s))  // 5

    s = append(s, 4, 5)
    fmt.Println(s)       // [0 0 0 4 5]
    fmt.Println(len(s))  // 5
    fmt.Println(cap(s))  // 5
}

Tento prístup umožňuje efektívne pracovať s dynamickými poľami v Go.