Junior — Middle
Jak správně vytvářet a inicializovat slices v Go?
sobes.tech AI
Odpověď od AI
V jazyce Go jsou řezy (slices) dynamické datové struktury, které představují odkaz na pole s určenou délkou a kapacitou.
Řezy lze vytvářet a inicializovat několika způsoby:
- Deklarace řezu bez inicializace (nil-řezy):
var s []int // nil-řezy, délka a kapacita 0
- Inicializace řezu pomocí literálu:
s := []int{1, 2, 3} // řez délky 3
- Vytvoření řezu pomocí funkce make:
s := make([]int, 5) // řez délky 5, naplněný nulami
s2 := make([]int, 3, 10) // délka 3, kapacita 10
Funkce make alokuje za scénou pole a vrací odkaz na něj.
- Vytvoření řezu z pole:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // řez prvků s indexy 1,2,3
Je důležité si pamatovat, že řezy jsou odkazy na pole, takže změna prvků řezu mění i původní pole.
Příklad použití:
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 přístup umožňuje efektivní práci s dynamickými poli v jazyce Go.