Sobes.tech
Junior — Middle

Em que situações ocorre a recolha e o deslocamento de dados na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, a recolha e o movimento de dados (copiar e mover) ocorrem em várias situações:

  • Ao atribuir valores a variáveis. Por exemplo, ao atribuir um valor a uma variável, ocorre uma cópia dos dados.
  • Ao passar argumentos para funções por valor. Os valores são copiados para os parâmetros da função.
  • Ao retornar valores de funções por valor.
  • Ao trabalhar com slices, mapas e canais, não se move o array ou os dados em si, mas um ponteiro para eles, o que é eficiente.

Go usa a semântica de passagem por valor, mas para estruturas complexas, frequentemente passam-se ponteiros para evitar copiar grandes volumes de dados.

Exemplo de cópia de estrutura:

 type Point struct {
    X, Y int
}

p1 := Point{X: 1, Y: 2}
p2 := p1 // cópia dos dados da estrutura
p2.X = 10
// p1.X continuará a ser 1, p2.X será 10

Assim, a recolha e o movimento de dados em Go são operações naturais de cópia ao atribuir e passar por valor, bem como a passagem de ponteiros para otimização.