Middle
Ի՞նչ կարգով են կատարվում հետաձգված ֆունկցիաները (defer) Go-ում։
sobes.tech AI
Պատասխան AI-ից
Նետված գործառույթները կատարվում են հակառակ հերթականությամբ, ինչպես դրանք սահմանվել են, այսինքն՝ LIFO (Last-In, First-Out):
package main
import "fmt"
func main() {
defer fmt.Println("առաջին") // Վերջին սահմանված
defer fmt.Println("երկրորդ") // Նախորդ սահմանված
defer fmt.Println("երրորդ") // Առաջին սահմանված
}
Արդյունքում, երբ այս կոդը գործարկվի, կարտադրվի.
երրորդ
երկրորդ
առաջին
Երբ դուրս եք գալիս scope-ից (ֆունկցիայից), որտեղ հայտարարվել է defer, հետաձգված գործառույթները կանչվում են հակառակ հերթականությամբ: Սա օգտակար է ռեսուրսների ազատման, ֆայլերի փակման, mutex-ների բացման և այլ մաքրման գործողությունների համար։