Sobes.tech
Junior — Middle

Kuidas Golang keeles toimub elementide edastamine funktsioonide ja struktuuride vahel?

sobes.tech AI

Vastus AI-lt

Go keeles võib elementide edastamine funktsioonide ja struktuuride vahel toimuda kahel peamisel viisil: väärtuse järgi ja viitena.

  • Väärtuse järgi: kopeeritakse ise struktuur või muutuja, muudatused funktsiooni sees ei mõjuta algset.
  • Viitena: edastatakse struktuuri või muutuja aadress, mis võimaldab funktsioonil muuta algandmeid.

Näide:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

func updateByValue(p Person) {
    p.Age = 30 // muutub ainult koopia
}

func updateByPointer(p *Person) {
    p.Age = 30 // muutub algne
}

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

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

Kui soovite funktsiooni sees andmeid muuta, edastage viit struktuurile. Kui muudatused ei ole vajalikud, saate edastada väärtuse järgi.