Junior — Middle
Hoe wordt de overdracht van elementen tussen functies en structuren geïmplementeerd in de Golang-taal?
sobes.tech AI
Antwoord van AI
In Go kan de overdracht van elementen tussen functies en structuren op twee hoofdmanieren plaatsvinden: per waarde en per pointer.
- Per waarde: de structuur of variabele zelf wordt gekopieerd, veranderingen binnen de functie beïnvloeden het origineel niet.
- Per pointer: wordt het adres van de structuur of variabele doorgegeven, waardoor de functie de oorspronkelijke gegevens kan wijzigen.
Voorbeeld:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func updateByValue(p Person) {
p.Age = 30 // alleen de kopie wordt gewijzigd
}
func updateByPointer(p *Person) {
p.Age = 30 // het origineel wordt gewijzigd
}
func main() {
person := Person{Name: "Ivan", Age: 25}
updateByValue(person)
fmt.Println(person.Age) // 25
updateByPointer(&person)
fmt.Println(person.Age) // 30
}
Dus, als je gegevens binnen de functie wilt wijzigen, geef je een pointer naar de structuur door. Als geen wijzigingen nodig zijn, kun je per waarde doorgeven.