Junior — Middle
È possibile aggiungere elementi a uno slice passato come argomento a una funzione?
sobes.tech AI
Risposta dell'AI
Sì, è possibile aggiungere elementi allo slice passato alla funzione, ma è importante capire che in Go uno slice è una struttura che contiene un puntatore a un array, una lunghezza e una capacità.
Se nella funzione usi append e assegni il risultato a una variabile locale, le modifiche non influenzeranno lo slice originale fuori dalla funzione, a meno che non restituisca un nuovo slice o passi un puntatore allo slice.
Esempio:
func addElement(s []int) []int {
s = append(s, 42) // aggiungi un elemento
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // bisogna riassegnare
fmt.Println(s) // [1 2 3 42]
}
Se vuoi modificare lo slice all'interno della funzione senza restituirlo, puoi passare un puntatore:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}