Sobes.tech
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-дан чиқишда чақирилади, функция қандай тугашидан қатъи назар.