Sobes.tech
Junior — Middle

Go dilində funksiyalara arqumentlərin ötürülməsi necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, funksiyalardakı arqumentlər dəyər ilə ötürülür. Bu, funksiyanı çağırarkən, arqumentlərin dəyərlərinin nüsxələrinin ötürüldüyü və funksiyada edilən dəyişikliklərin orijinal dəyişənlərə təsir etmədiyi anlamına gəlir.

Əgər çağıran koddan dəyişənin dəyərini dəyişmək lazımdırsa, ona göstərici (pointer) ötürülür. Beləliklə, funksiya ünvanı alır və bu ünvandakı dəyəri dəyişə bilər.

Dəyər və göstərici ilə ötürmə nümunəsi:

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) // 5 göstərici ilə ötürülüb, çap edir

    incrementByPointer(&a)
    fmt.Println(a) // 6 göstərici ilə ötürülüb, çap edir
}