Sobes.tech
Junior — Middle

Como é que a passagem de elementos entre funções e estruturas é implementada na linguagem Golang?

sobes.tech IA

Resposta da IA

No Go, a transferência de elementos entre funções e estruturas pode ser feita de duas formas principais: por valor e por ponteiro.

  • Por valor: copia-se a própria estrutura ou variável, as alterações dentro da função não afetam o original.
  • Por ponteiro: é passado o endereço da estrutura ou variável, permitindo que a função modifique os dados originais.

Exemplo:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

func updateByValue(p Person) {
    p.Age = 30 // apenas a cópia será alterada
}

func updateByPointer(p *Person) {
    p.Age = 30 // o original será alterado
}

func main() {
    person := Person{Name: "Ivan", Age: 25}
    updateByValue(person)
    fmt.Println(person.Age) // 25

    updateByPointer(&person)
    fmt.Println(person.Age) // 30
}

Portanto, se desejar alterar os dados dentro da função, passe um ponteiro para a estrutura. Se não precisar de alterações, pode passar por valor.