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