Junior — Middle
Kako pravilno kreirati i inicijalizovati slice-ove u Go?
sobes.tech АИ
Одговор од АИ
У Go, rezovi (slices) су динамичке структуре података које представљају референцу на низ са одређеном дужином и капацитетом.
Резови се могу креирати и иницијализовати на више начина:
- Декларација реза без иницијализације (nil-рез):
var s []int // nil-рез, дужина и капацитет 0
- Иницијализација реза помоћу литерала:
s := []int{1, 2, 3} // рез дужине 3
- Креирање реза помоћу функције make:
s := make([]int, 5) // рез дужине 5, попуњен нулама
s2 := make([]int, 3, 10) // дужина 3, капацитет 10
Функција make резервише низ у позадини и враћа референцу на њега.
- Креирање реза из низа:
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-у.