Junior — Middle
Ar galima pridėti elementų prie funkcijai perduoto sluoksnio?
sobes.tech AI
Atsakymas iš AI
Taip, galima pridėti elementų prie funkcijai perduoto skaidinio (slice), tačiau svarbu suprasti, kad Go kalboje skaidinys (slice) yra struktūra, kuri turi rodyklę į masyvą, ilgį ir talpą.
Jei funkcijoje naudojate append ir rezultatą priskiriate vietinei kintamajai, pakeitimai nepaveiks pirminio skaidinio už funkcijos ribų, nebent grąžinsite naują skaidinį arba perduosite rodyklę į skaidinį.
Pavyzdys:
func addElement(s []int) []int {
s = append(s, 42) // pridėti elementą
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // reikia priskirti iš naujo
fmt.Println(s) // [1 2 3 42]
}
Jei norite pakeisti skaidinį funkcijos viduje be grąžinimo, galite perduoti rodyklę:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}