Junior — Middle
Poți adăuga elemente la un slice transmis ca argument într-o funcție?
sobes.tech AI
Răspuns de la AI
Da, este posibil să adăugați elemente la slice-ul transmis funcției, dar este important să înțelegeți că în Go, un slice este o structură care conține un pointer către un array, o lungime și o capacitate.
Dacă în funcție folosiți append și atribuiți rezultatul unei variabile locale, modificările nu vor afecta slice-ul original în afara funcției, cu excepția cazului în care returnați un nou slice sau transmiteți un pointer către slice.
Exemplu:
func addElement(s []int) []int {
s = append(s, 42) // adaugă un element
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // trebuie să reasignați
fmt.Println(s) // [1 2 3 42]
}
Dacă doriți să modificați slice-ul în interiorul funcției fără a-l returna, puteți transmite un pointer:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}