Sobes.tech
Middle+

Tarea: ¿Qué mostrará el código? ```go package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := a[:2] b = append(b, 100) fmt.Println(a, b) } ```

sobes.tech AI

Respuesta de la IA

Código:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b hace referencia a los primeros dos elementos de a: [1, 2]
    b = append(b, 100) // añadimos 100 a la rebanada b
    fmt.Println(a, b)
}

Análisis:

  • Inicialmente, a = [1, 2, 3, 4, 5]
  • b := a[:2] — la rebanada b contiene [1, 2], y su capacidad es 5 (desde 0 hasta el final de a)
  • append(b, 100) añade el elemento 100 a la rebanada b. Como la capacidad de b permite expandirse sin asignar memoria nueva, el elemento 100 se escribe en a[2], modificando el array original a.

Después de append:

  • a se convierte en [1, 2, 100, 4, 5]
  • b se convierte en [1, 2, 100]

Salida:

[1 2 100 4 5] [1 2 100]

Es decir, el elemento a[2] cambió de 3 a 100, ya que b y a comparten un array subyacente.