Junior — Middle
Kuidas toimub argumentide edastamine funktsioonides Go keeles?
sobes.tech AI
Vastus AI-lt
Go keeles funktsioonides argumendid edastatakse väärtuse järgi. See tähendab, et funktsiooni kutsumisel edastatakse argumentide väärtuste koopiad ning muutused funktsiooni sees ei mõjuta algseid muutujaid.
Kui soovite muuta muutuja väärtust kutsuva koodi seest, edastatakse selle muutuja viit (pointer). Siis saab funktsioon aadressi ning muuta selle aadressi väärtust.
Näide väärtuse ja viite edastamisest:
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) // Kuvab 5, kuna edastatud väärtusena
incrementByPointer(&a)
fmt.Println(a) // Kuvab 6, kuna edastatud viitena
}