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.