Junior — Middle
Ի՞նչ գործողություններ են կատարվում ստեքում ծրագրում ֆունկցիա գործարկելու ժամանակ։
sobes.tech AI
Պատասխան AI-ից
Երբ դուք կանչում եք ֆունկցիա Go ծրագրում (և շատ լեզուներում, որոնք աջակցում են կանչի տախտակին), տեղի է ունենում հետևյալը:
- Ստեղնային շրջանակ (stack frame) է հատկացվում — հիշողության տարածք տեղական փոփոխականների, պարամետրերի և վերադարձի հասցեի համար:
- Վերադարձի հասցեն պահվում է — որպեսզի ֆունկցիայի ավարտից հետո ծրագիրը կարողանա շարունակել ճիշտ տեղից:
- Ֆունկցիայի պարամետրերը պատճենվում են — արգումենտների արժեքները փոխանցվում են նոր շրջանակին:
- Տեղական փոփոխականները inicilize են — հիշողություն է հատկացվում և, եթե անհրաժեշտ է, սկզբնական արժեքներ են սահմանվում:
Ֆունկցիայի կատարման ավարտից հետո, ստեղնային շրջանակը ջնջվում է, և կառավարումը վերադառնում է պահած հասցեին:
Օրինակ (պարզեցված):
func add(a, b int) int {
sum := a + b
return sum
}
func main() {
result := add(2, 3)
fmt.Println(result) // 5
}
Երբ կանչվում է add, ստեղծվում է ստեղնային շրջանակ a=2, b=3, տեղական փոփոխական sum և վերադարձի հասցե main-ում։