Sobes.tech
Senior

// Pregunta 4. ¿Qué mostrará en la pantalla package main import "fmt" func subis(is []int) []int { return append(is, 5) } func main() { is := []int{1, 2, 3, 4} subis(is[2:3]) fmt.Println(is) }

sobes.tech AI

Respuesta de la IA

En este código se crea una rebanada is con los elementos [1, 2, 3, 4]. Luego se llama a la función subis con el argumento is[2:3], que es un rebanado que contiene solo el elemento 3.

La función subis devuelve una nueva rebanada, obtenida añadiendo el elemento 5 a la rebanada pasada. Sin embargo, el resultado de la llamada a subis no se guarda en ningún lugar, por lo que la rebanada original is no cambia.

La salida del programa será:

[1 2 3 4]

Explicación:

  • Las rebanadas en Go son estructuras que contienen un puntero a un array, una longitud y una capacidad.
  • is[2:3] crea una nueva rebanada de longitud 1, que apunta al elemento 3 en el array.
  • append puede modificar el array original si hay capacidad libre, pero como el resultado no se asigna, los cambios no se guardan.
  • La rebanada original is permanece sin cambios.