Sobes.tech
Junior — Middle

Hogyan hozzunk létre és inicializáljunk helyesen szeleteket Go-ban?

sobes.tech MI

Válasz az MI-től

Go-ban a szeletek (slices) dinamikus adatstruktúrák, amelyek egy adott hosszúságú és kapacitású tömbre mutató hivatkozást képviselnek.

A szeleteket többféleképpen lehet létrehozni és inicializálni:

  1. Szelet deklarálása inicializálás nélkül (null-szelet):
var s []int // null-szelet, hosszúság és kapacitás 0
  1. Szelet inicializálása literál segítségével:
s := []int{1, 2, 3} // hosszúságú 3 szelet
  1. Szelet létrehozása a make függvénnyel:
s := make([]int, 5) // hosszúságú 5, nullákkal töltött szelet
s2 := make([]int, 3, 10) // hosszúság 3, kapacitás 10

A make függvény a háttérben egy tömböt foglal le, és egy olyan szeletet ad vissza, ami erre mutat.

  1. Szelet létrehozása egy tömbből:
arr := [5]int{1, 2, 3, 4, 5}
s := arr[1:4] // az indexek 1,2,3 elemeinek szelete

Fontos megjegyezni, hogy a szeletek referenciák a tömbökre, így a szelet elemeinek módosítása a tömböt is módosítja.

Példa a használatra:

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
}

Ez a megközelítés hatékonyan lehetővé teszi a dinamikus tömbökkel való munkát Go-ban.