Junior — Middle
Как правилно да създавате и инициализирате срезове в Go?
sobes.tech AI
Отговор от AI
В Go, срезовете (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.