Sobes.tech
Senior

Tarefa com fatias: o que irão imprimir várias operações de append e fatias? (tarefa com fatias a, b, c, d)

sobes.tech IA

Resposta da IA

No Go, as operações com slices e append podem comportar-se de forma não intuitiva devido à implementação interna dos slices (slice) e à sua capacidade.

Exemplo:

package main
import "fmt"

func main() {
    a := []int{1, 2, 3, 4}
    b := a[1:3]       // b = [2,3]
    c := append(b, 5) // append ao slice b
    d := append(a, 6) // append ao slice a

    fmt.Println("a:", a)
    fmt.Println("b:", b)
    fmt.Println("c:", c)
    fmt.Println("d:", d)
}

O que acontece:

  • Os slices b e a podem referir-se ao mesmo array subjacente.
  • append pode modificar o array subjacente se a capacidade permitir, ou criar um novo.
  • As alterações através do append podem afetar outros slices se eles partilharem o mesmo array.

A saída depende da capacidade dos slices originais e se é alocada nova memória durante o append. É importante ter isto em conta para evitar alterações inesperadas nos dados.