Sobes.tech
Junior — Middle

¿Qué datos dentro del slice se pasan al llamar a la función con este slice como argumento?

sobes.tech AI

Respuesta de la IA

En Go, un slice es una estructura que contiene tres campos: un puntero a un array, una longitud y una capacidad. Cuando se pasa un slice a una función, solo se copia esta estructura, no todo el array de datos.

Es decir, al llamar a una función, el slice se pasa por valor, pero solo se copian los metadatos (puntero, longitud, capacidad), no los elementos del array en sí. Esto significa que dentro de la función, el slice apunta al mismo array base, y los cambios en los elementos del slice dentro de la función serán visibles fuera.

Ejemplo:

func modify(slice []int) {
    slice[0] = 100 // cambiamos el primer elemento
}

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

Por lo tanto, al pasar un slice a una función, solo se copian los tres campos de la estructura del slice, mientras que los datos del array permanecen compartidos.