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