Junior — Middle
Kaip Golang kalboje vykdomas elementų perdavimas tarp funkcijų ir struktūrų?
sobes.tech AI
Atsakymas iš AI
Go kalboje elementų perdavimas tarp funkcijų ir struktūrų gali būti atliekamas dviem pagrindiniais būdais: pagal reikšmę ir pagal nuorodą.
- Pagal reikšmę: paimama pati struktūra arba kintamasis, pakeitimai funkcijos viduje neveikia originalo.
- Pagal nuorodą: perduodama struktūros arba kintamojo adresas, leidžiantis funkcijai keisti originalius duomenis.
Pavyzdys:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func updateByValue(p Person) {
p.Age = 30 // pakeis tik kopiją
}
func updateByPointer(p *Person) {
p.Age = 30 // pakeis originalą
}
func main() {
person := Person{Name: "Ivan", Age: 25}
updateByValue(person)
fmt.Println(person.Age) // 25
updateByPointer(&person)
fmt.Println(person.Age) // 30
}
Jei norite keisti duomenis funkcijos viduje, perduokite nuorodą į struktūrą. Jei pakeitimai nereikalingi, galite perduoti pagal reikšmę.