Sobes.tech
Senior

Por que não usar sempre arrays em vez de slices?

sobes.tech IA

Resposta da IA

Os arrays em Go têm um tamanho fixo, que é definido na declaração, e esse tamanho faz parte do tipo. Isso significa que os arrays não são flexíveis e não podem alterar o comprimento dinamicamente.

As fatias (slices) são um tipo mais conveniente e flexível que representa uma vista dinâmica de um array. Elas contêm um ponteiro para o array, um comprimento e uma capacidade, o que permite alterar o tamanho da fatia, adicionar elementos (através de append) e passar fatias como estruturas mais universais.

Por que não usar sempre arrays:

  • Arrays são de tamanho fixo, o que é inconveniente para dados dinâmicos.
  • Passar um array para uma função copia todo o array, o que é caro em memória e tempo.
  • As fatias são passadas por referência ao array, o que é mais eficiente.

Exemplo:

var arr [3]int = [3]int{1, 2, 3} // tamanho fixo
var s []int = arr[:2]            // fatia de uma parte do array
s = append(s, 4)                 // a fatia pode ser expandida (se houver capacidade)

Assim, as fatias são uma ferramenta mais versátil e conveniente para trabalhar com sequências de dados em Go.