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.