Sobes.tech
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ę.