Junior — Middle
Jak realizowana jest przekazywanie elementów między funkcjami i strukturami w języku Golang?
sobes.tech AI
Odpowiedź od AI
W języku Go przekazywanie elementów między funkcjami i strukturami może odbywać się na dwa główne sposoby: przez wartość i przez wskaźnik.
- Przez wartość: kopiuje się sama struktura lub zmienna, zmiany wewnątrz funkcji nie wpływają na oryginał.
- Przez wskaźnik: przekazywany jest adres struktury lub zmiennej, co pozwala funkcji na modyfikację danych źródłowych.
Przykład:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func updateByValue(p Person) {
p.Age = 30 // zmieni się tylko kopia
}
func updateByPointer(p *Person) {
p.Age = 30 // zmieni się oryginał
}
func main() {
person := Person{Name: "Ivan", Age: 25}
updateByValue(person)
fmt.Println(person.Age) // 25
updateByPointer(&person)
fmt.Println(person.Age) // 30
}
Dlatego, jeśli chcesz zmienić dane wewnątrz funkcji, przekazujesz wskaźnik na strukturę. Jeśli zmiany nie są potrzebne, można przekazać przez wartość.