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]
}