Junior — Middle
Kaip vyksta argumentų perdavimas funkcijose Go kalboje?
sobes.tech AI
Atsakymas iš AI
Go kalboje funkcijose argumentai perduodami pagal reikšmę. Tai reiškia, kad kviečiant funkciją, perduodamos argumentų reikšmių kopijos, ir viduje funkcijos atlikti pakeitimai neveikia originalių kintamųjų.
Jei norite pakeisti kintamojo reikšmę iš kviečiančio kodo, perduodamas nuorodos (pointer) į tą kintamąjį. Tuomet funkcija gauna adresą ir gali pakeisti reikšmę šiame adrese.
Pavyzdys, kaip perduoti pagal reikšmę ir nuorodą:
package main
import "fmt"
func incrementByValue(x int) {
x = x + 1
}
func incrementByPointer(x *int) {
*x = *x + 1
}
func main() {
a := 5
incrementByValue(a)
fmt.Println(a) // Spausdins 5, nes perduota kaip reikšmė
incrementByPointer(&a)
fmt.Println(a) // Spausdins 6, nes perduota kaip nuoroda
}