Junior — Middle
Роли оператори defer дар забони Go чист ва чӣ фоидаҳо дорад?
sobes.tech AI
Ҷавоб аз AI
Ҳамкор defer оператори, Go тилида, атрофидаги функция тугашидан олдин кечиктирилган ҳолда функцияни ишга тушириш учун қўлланилади (одатда ресурсларни озод қилиш ёки якунловчи ҳаракатларни амалга ошириш учун).
deferнинг афзалликлари:
- Функция хатолик ёки паника билан тугашига қарамай, кодни функция охирида ишга туширишни кафолатлайди.
- Коднинг ўқилишига яхшиланиш беради, ресурсларни ажратиш билан бирга уларни озод қилишни ёзиш имконини беради.
- Функциянинг турли жойларида тозалаш коди такрорланишининг олдини олади.
Масалан:
func readFile() error {
file, err := os.Open("file.txt")
if err != nil {
return err
}
defer file.Close() // файл функциядан чиқишда ёпилади
// файл билан ишлаш
return nil
}
Бу ерда, file.Close() автоматик равишда readFile-дан чиқишда чақирилади, функция қандай тугашидан қатъи назар.