Sobes.tech
Junior — Middle

¿Cómo se pasa un slice a una función en un lenguaje de programación?

sobes.tech AI

Respuesta de la IA

En Go, el slice se pasa a una función por valor, pero el slice contiene un puntero a un array, así como su longitud y capacidad. Esto significa que al pasar un slice a una función, se copia la estructura del slice, pero no los datos del array al que apunta.

Por esto, los cambios en los elementos del slice dentro de la función se reflejan en el array original, pero cambiar el propio slice (por ejemplo, asignarle un nuevo slice) no afecta al slice externo.

Ejemplo:

package main
import "fmt"

func modifySlice(s []int) {
    s[0] = 100       // cambiará el elemento del array original
    s = append(s, 200) // cambiará el slice local, el externo no se modificará
}

func main() {
    s := []int{1, 2, 3}
    modifySlice(s)
    fmt.Println(s) // Imprimirá: [100 2 3]
}

De esta forma, el slice se pasa por valor, pero gracias al puntero interno, los cambios en los elementos son visibles fuera de la función.