Sobes.tech
Junior — Middle

Ako sa realizuje prenos prvkov medzi funkciami a štruktúrami v jazyku Golang?

sobes.tech AI

Odpoveď od AI

V jazyku Go môže byť odovzdanie prvkov medzi funkciami a štruktúrami vykonané dvoma hlavnými spôsobmi: podľa hodnoty a podľa ukazovateľa.

  • Podľa hodnoty: kopíruje sa samotná štruktúra alebo premenná, zmeny vo vnútri funkcie neovplyvnia originál.
  • Podľa ukazovateľa: odovzdáva sa adresa štruktúry alebo premennej, čo umožňuje funkcii meniť pôvodné údaje.

Príklad:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

func updateByValue(p Person) {
    p.Age = 30 // zmení sa iba kópia
}

func updateByPointer(p *Person) {
    p.Age = 30 // zmení sa originál
}

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

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

Ak chcete zmeniť údaje vo vnútri funkcie, odovzdajte ukazovateľ na štruktúru. Ak nie sú potrebné zmeny, môžete odovzdať podľa hodnoty.