Sobes.tech
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.