Sobes.tech
Middle

Дефер дар Go чист ва кай вақт даъват мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар Go калидвожа defer барои таъхир дар даъвати функсия истифода мешавад: он пас аз анҷоми функсияи гирду атроф, аммо пеш аз баромадани он иҷро мешавад.

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

Масалан:

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

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

Ин ҷо, file.Close() автоматӣ даъват мешавад вақте ки аз readFile баромада мешавад, новобаста аз он ки функсия чӣ гуна ба охир мерасад.