Length está para quantidade de elementos, enquanto que Capacity é o limite de elementos que se pode ter.
Exemplo:
// A variável 's' é um slice de valores inteiros, com 3 elementos e capacidade de 6 elementos.
s := make([]int, 3, 6)
// A variável 'b' é um slice de strings, com 2 elementos e capacidade não declarada.
b := []string{"eita", "preula"}
- Array:
- Tem tamanho fixo.
- Tem tipo de elemento determinado.
Exemplo de array:
// A variável 'a' é do tipo Array, de valores inteiros, e no máximo 4 valores.
// Sua capacidade é declarada na sua criação.
var a [4]int
- Slice
- Tamanho dinâmico.
Exemplo de slice:
// A variável 's' é um slice de valores inteiros, com 3 elementos e capacidade de 6.
s := make([]int, 3, 6)
s = append(s, 1)
s = append(s, 2)
s = append(s, 3)
// Adicionando um sétimo elemento ao slice
s = append(s, 4)
fmt.Println(s)
// [0 0 0 1 2 3 4]
Com Maps, podemos usar qualquer valor como chave. Enquanto que no Array podemos usar apenas números inteiros. Nisso, um map tá mais próximo de uma hash table do que um array.