Sobes.tech
Junior — Middle

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

sobes.tech AI

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

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

Եթե անհրաժեշտ է փոփոխել կանչող կոդից փոփոխականինը, փոխանցվում է այդ փոփոխականի ցուցիչը: Այդ դեպքում, ֆունկցիան ստանում է հասցեն և կարող է փոփոխել այդ հասցեում գտնվող արժեքը:

Արժեքով և ցուցիչով փոխանցման օրինակ:

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, քանի որ փոխանցվել է արժեքով

    incrementByPointer(&a)
    fmt.Println(a) // Տպում է 6, քանի որ փոխանցվել է ցուցիչով
}