Sobes.tech
Junior

Қай ролро дар забони Go нақш мебозад сохтори defer?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, сохтории defer барои таъхир дар иҷрои функсия истифода мешавад — он дар вақти баромад аз функсияи ҳозир, новобаста аз он ки чӣ гуна баромад мешавад (нормалӣ ё бо сабаби хато), фаро хонда мешавад.

Ин барои озод кардани захираҳо, бастани файлҳо, кушодани mutex ва дигар амалиётҳои тозакунӣ қулай аст.

Масалан:

func readFile() error {
    file, err := os.Open("file.txt")
    if err != nil {
        return err
    }
    defer file.Close() // файл дар вақти баромад аз функсия баста мешавад

    // кор бо файл
    return nil
}

Ин тариқ, defer кӯмак мекунад, ки иҷрои амалҳои муҳим барои анҷом додан кафолат дода шавад, ки ин идоракунии захираҳо ва коркарди хатоҳоро беҳтар мекунад.