Go · Intermediário · Inglês · Técnico
backing array
Array real que guarda os elementos por trás de um slice. Vários slices podem apontar para o mesmo, e por isso mudanças vazam entre eles.
Onde usar
Surge em bugs do tipo 'alterei b e o a mudou': fatiar não copia. Para isolar os dados, usa-se copy ou slices.Clone.
Em código
a := []int{1, 2, 3, 4}
b := a[:2]
b[0] = 99
fmt.Println(a[0]) // 99
c := slices.Clone(a)
c[0] = 1
fmt.Println(a[0]) // 99Exemplos
Both slices share the same backing array.
Os dois slices compartilham o mesmo backing array.
Clone the slice so it gets its own backing array.
Clone o slice para ele ter o seu próprio backing array.
Cuidado
Um slice pequeno retido pode manter vivo um array enorme na memória; copie o trecho necessário se quiser liberar o resto.
Sinônimos
array subjacente