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.