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:
- Szelet deklarálása inicializálás nélkül (null-szelet):
var s []int // null-szelet, hosszúság és kapacitás 0
- Szelet inicializálása literál segítségével:
s := []int{1, 2, 3} // hosszúságú 3 szelet
- 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.
- 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.