Junior — Middle
Come si può aumentare la dimensione del segmento passato a una funzione in un linguaggio di programmazione?
sobes.tech AI
Risposta dell'AI
In Go, uno slice è una struttura che contiene un puntatore a un array, una lunghezza e una capacità. Se devi aumentare la dimensione di uno slice passato a una funzione, puoi fare quanto segue:
- Passare lo slice per valore, ma all’interno della funzione creare un nuovo slice con lunghezza o capacità aumentate usando la funzione
append. - Se devi modificare lo slice stesso (ad esempio, aumentare la lunghezza) e vuoi che le modifiche siano visibili all’esterno, puoi passare un puntatore allo slice (
*[]T), così all’interno della funzione puoi riassegnare lo slice.
Esempio di aumento di uno slice all’interno di una funzione restituendo un nuovo slice:
func extendSlice(s []int, n int) []int {
// Aggiungi n elementi nulli
s = append(s, make([]int, n)...)
return s
}
func main() {
s := []int{1, 2, 3}
s = extendSlice(s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
Se la funzione deve modificare lo slice senza restituirlo, puoi usare un puntatore:
func extendSlicePtr(s *[]int, n int) {
*s = append(*s, make([]int, n)...)
}
func main() {
s := []int{1, 2, 3}
extendSlicePtr(&s, 2)
fmt.Println(s) // [1 2 3 0 0]
}
In questo modo, per aumentare la dimensione dello slice all’interno di una funzione, devi restituire un nuovo slice o passare un puntatore allo slice.