Sobes.tech
Senior

O que é um slice e como difere de um array?

sobes.tech IA

Resposta da IA

Em Go, um array é uma estrutura de tamanho fixo que contém elementos de um mesmo tipo. O tamanho do array é definido na declaração e não pode ser alterado durante a execução do programa.

Slice é uma fatia dinâmica e ajustável do array. É uma estrutura que contém um ponteiro para o array, o comprimento e a capacidade. Os slices permitem trabalhar com subconjuntos do array e expandir-se automaticamente quando necessário.

Principais diferenças:

  • Tamanho: o array tem um tamanho fixo, o slice é dinâmico.
  • Passagem: arrays são passados por valor (copiados), slices por referência (ponteiro para o array).
  • Flexibilidade: o slice pode ser expandido usando a função append, o array não.

Exemplo:

var arr [3]int = [3]int{1, 2, 3} // array de tamanho fixo

var s []int = arr[0:2] // slice referindo-se a uma parte do array

s = append(s, 4) // o slice é expandido, e se necessário, um novo array é criado