Sobes.tech
Middle

Ի՞նչ է defer-ը և ինչու է այն օգտագործվում: Որ կարգով են կատարվում defer-զանգումները, եթե դրանք մի քանի են մեկ ֆունկցիայում:

sobes.tech AI

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

Go լեզվում, defer բանալի բառը օգտագործվում է հետաձգված կանչի համար. այն կիրականացվի շրջապատող ֆունկցիայի ավարտից հետո, բայց նրա վերադարձից առաջ: Սա հարմար է ռեսուրսների ազատման, ֆայլերի փակման, mutex-ների բացման և այլ մաքրման գործողությունների համար:

Եթե մեկ ֆունկցիայում մի քանի defer կանչեր կան, դրանք կատարվում են հակառակ հերթականությամբ, ինչպես հայտարարվել է (պատյանային կարգ): Այսինքն, վերջին հայտարարված defer-ը կատարվում է առաջինը:

Օրինակ:

func օրինակ() {
    defer fmt.Println("Առաջին defer")
    defer fmt.Println("Երկրորդ defer")
    fmt.Println("Ֆունկցիայի մարմնում")
}
// Արդյունքը կլինի՝
// Ֆունկցիայի մարմնում
// Երկրորդ defer
// Առաջին defer