Sobes.tech
Junior — Middle

Jak poprawnie tworzyć i inicjalizować slices w Go?

sobes.tech AI

Odpowiedź od AI

W Go, slices są dynamicznymi strukturami danych, które reprezentują odwołanie do tablicy z określoną długością i pojemnością.

Slicy można tworzyć i inicjalizować na kilka sposobów:

  1. Deklaracja slice bez inicjalizacji (slice nil):
var s []int // slice nil, długość i pojemność 0
  1. Inicjalizacja slice za pomocą literału:
s := []int{1, 2, 3} // slice o długości 3
  1. Tworzenie slice za pomocą funkcji make:
s := make([]int, 5) // slice o długości 5, wypełniony zerami
s2 := make([]int, 3, 10) // długość 3, pojemność 10

Funkcja make przydziela tablicę w tle i zwraca slice wskazujący na nią.

  1. Tworzenie slice z tablicy:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // slice elementów o indeksach 1,2,3

Ważne jest, aby pamiętać, że slice to odwołanie do tablicy, więc zmiana elementów slice zmienia również oryginalną tablicę.

Przykład użycia:

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
}

Ta metoda pozwala na efektywną pracę z dynamicznymi tablicami w Go.