Middle+
Tarefa: O que irá mostrar o 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 IA
Resposta da IA
Código:
package main
import "fmt"
func main() {
a := []int{1, 2, 3, 4, 5}
b := a[:2] // b refere-se aos dois primeiros elementos de a: [1, 2]
b = append(b, 100) // adiciona 100 ao slice b
fmt.Println(a, b)
}
Análise:
- Inicialmente,
a= [1, 2, 3, 4, 5] b := a[:2]— o slicebcontém [1, 2], e sua capacidade é 5 (de 0 até o final dea)append(b, 100)adiciona o elemento 100 ao sliceb. Como a capacidade debpermite expandir sem alocar nova memória, o elemento 100 é escrito ema[2], modificando o array originala.
Após o append:
atorna-se [1, 2, 100, 4, 5]btorna-se [1, 2, 100]
Saída:
[1 2 100 4 5] [1 2 100]
Ou seja, o elemento a[2] mudou de 3 para 100, pois b e a compartilham um array subjacente.