Junior — Middle
¿Cómo se puede aumentar el tamaño del segmento pasado a una función en un lenguaje de programación?
sobes.tech AI
Respuesta de la IA
En Go, un slice es una estructura que contiene un puntero a un array, una longitud y una capacidad. Si necesitas aumentar el tamaño de un slice pasado a una función, puedes hacer lo siguiente:
- Pasar el slice por valor, pero dentro de la función crear un nuevo slice con mayor longitud o capacidad usando la función
append. - Si necesitas modificar el propio slice (por ejemplo, aumentar su longitud) y que los cambios sean visibles fuera, puedes pasar un puntero al slice (
*[]T), así dentro de la función puedes reasignar el slice.
Ejemplo de cómo aumentar un slice dentro de una función devolviendo un nuevo slice:
func extendSlice(s []int, n int) []int {
// Añadir n elementos nulos
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]
}
Si la función debe modificar el slice sin devolverlo, puedes usar un puntero:
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]
}
De esta forma, para aumentar el tamaño del slice en una función, debes devolver un nuevo slice o pasar un puntero al slice.