Sobes.tech
Junior — Middle

Kako pravilno kreirati i inicijalizovati slice-ove u Go?

sobes.tech АИ

Одговор од АИ

У Go, rezovi (slices) су динамичке структуре података које представљају референцу на низ са одређеном дужином и капацитетом.

Резови се могу креирати и иницијализовати на више начина:

  1. Декларација реза без иницијализације (nil-рез):
var s []int // nil-рез, дужина и капацитет 0
  1. Иницијализација реза помоћу литерала:
s := []int{1, 2, 3} // рез дужине 3
  1. Креирање реза помоћу функције make:
s := make([]int, 5) // рез дужине 5, попуњен нулама
s2 := make([]int, 3, 10) // дужина 3, капацитет 10

Функција make резервише низ у позадини и враћа референцу на њега.

  1. Креирање реза из низа:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // рез елемената са индексима 1,2,3

Важно је запамтити да су резови референце на низове, па промена елемената у резу мења и оригинални низ.

Пример употребе:

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
}

Овај приступ омогућава ефикасан рад са динамичким низовима у Go-у.