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
}