Sobes.tech
Junior — Middle

Ինչպե՞ս է կատարվում պարամետրերի փոխանցումը Go լեզվի ֆունկցիաներում:

sobes.tech AI

Պատասխան AI-ից

Go լեզվում ֆունկցիայի պարամետրերը փոխանցվում են արժեքով, այսինքն՝ պատճենվում են ֆունկցիայի կանչի ժամանակ: Սա նշանակում է, որ ֆունկցիայի ներսում դուք աշխատում եք փոխանցված արժեքի պատճենի հետ, և պարամետրի փոփոխությունները չեն ազդում սկզբնաղբյուրի վրա:

Այնուամենայնիվ, եթե պարամետրը ցույց է տալիս, սլայս է, քարտեզ, ալիք կամ ինտերֆեյս, ապա պատճենվում է տվյալների վրա հղում պարունակող կառուցվածքը, և այդ հղման միջոցով կատարված փոփոխությունները կարող են ազդել սկզբնաղբյուրի վրա:

Պարամետրերի փոխանցման օրինակ:

func increment(x int) {
    x = x + 1 // պատճենը փոխվում է, սկզբնաղբյուրն անփոփոխ է
}

func incrementPointer(x *int) {
    *x = *x + 1 // հասցեում գտնվող արժեքը փոխվում է, սկզբնաղբյուրն էլ փոխվում է
}

func main() {
    a := 5
    increment(a)
    fmt.Println(a) // կտպի 5

    incrementPointer(&a)
    fmt.Println(a) // կտպի 6
}