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