Sobes.tech
Junior — Middle

Hozzá lehet adni elemeket egy szelethez, amelyet argumentumként adunk át egy függvénynek?

sobes.tech MI

Válasz az MI-től

Igen, lehet elemeket hozzáadni a függvénynek átadott szelethez, de fontos megérteni, hogy Go-ban a szelet (slice) egy olyan struktúra, amely egy mutatót tartalmaz egy tömbre, egy hosszúságot és egy kapacitást.

Ha a függvényben append-et használsz, és az eredményt helyi változóhoz rendeli, akkor a változtatások nem befolyásolják az eredeti szeletet a függvényen kívül, kivéve, ha új szeletet adsz vissza vagy mutatót adsz át a szelethez.

Példa:

func addElement(s []int) []int {
    s = append(s, 42) // elem hozzáadása
    return s
}

func main() {
    s := []int{1, 2, 3}
    s = addElement(s) // újra kell rendelni
    fmt.Println(s) // [1 2 3 42]
}

Ha módosítani szeretnéd a szeletet a függvényen belül anélkül, hogy vissza kellene adni, mutatót adhatsz át:

func addElementPtr(s *[]int) {
    *s = append(*s, 42)
}

func main() {
    s := []int{1, 2, 3}
    addElementPtr(&s)
    fmt.Println(s) // [1 2 3 42]
}