ExpertiDict

Go · Avançado · Inglês · Técnico

slice header

/slaɪs ˈhɛdɚ/substantivo

Estrutura interna de três palavras (ponteiro para o array, len e cap) que representa um slice. Atribuir ou passar um slice copia esse cabeçalho, não os dados.

Onde usar

Explica por que um append dentro de uma função não altera o slice do chamador: ela recebeu uma cópia do cabeçalho, com o próprio len. Aparece em entrevistas e em bugs de append.

Em código

func grow(s []int) { s = append(s, 1) }
s := make([]int, 0, 4)
grow(s)
fmt.Println(len(s)) // 0
fmt.Println(s[:1])  // [1]

Exemplos

The function got a copy of the slice header, so the length didn't change.

A função recebeu uma cópia do slice header, então o tamanho não mudou.

A slice header is just a pointer, a length and a capacity.

Um slice header é só um ponteiro, um tamanho e uma capacidade.

Cuidado

Os elementos continuam compartilhados, mas len e cap são copiados: mudar o tamanho na cópia não muda o original.

Sinônimos

cabeçalho do slice

Veja também

Todos os termos de Go