Sobes.tech
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:

  1. Deklarace řezu bez inicializace (nil-řezy):
var s []int // nil-řezy, délka a kapacita 0
  1. Inicializace řezu pomocí literálu:
s := []int{1, 2, 3} // řez délky 3
  1. 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.

  1. 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.