Junior — Middle
¿Se pueden agregar elementos a un slice pasado como argumento a una función?
sobes.tech AI
Respuesta de la IA
Sí, se pueden agregar elementos a la lista pasada a la función, pero es importante entender que en Go, una lista (slice) es una estructura que contiene un puntero a un array, una longitud y una capacidad.
Si en la función usas append y asignas el resultado a una variable local, los cambios no afectarán a la lista original fuera de la función, a menos que devuelvas una nueva lista o pases un puntero a la lista.
Ejemplo:
func addElement(s []int) []int {
s = append(s, 42) // agregamos un elemento
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // es necesario reasignar
fmt.Println(s) // [1 2 3 42]
}
Si quieres modificar la lista dentro de la función sin devolverla, puedes pasar un puntero:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}