Sobes.tech
Junior — Middle

Как правилно да създавате и инициализирате срезове в Go?

sobes.tech AI

Отговор от AI

В Go, срезовете (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.