Sobes.tech
Middle

Дар кадом тартиб функсияҳои дарозмуддат (defer) дар Go иҷро мешаванд?

sobes.tech AI

Ҷавоб аз AI

Функсияҳои таъхиршуда дар тартиби муқобил ба онҳое, ки муайян шудаанд, яъне LIFO (Last-In, First-Out) иҷро мешаванд.

package main

import "fmt"

func main() {
	defer fmt.Println("аввалин") // Дуюм муайян шудааст
	defer fmt.Println("дуюм") // Пештар муайян шудааст
	defer fmt.Println("сеюм") // Аввалин муайян шудааст
}

Натиҷа, вақте ки ин код иҷро мешавад, чунин хоҳад буд:

сеюм
дуюм
аввалин

Ҳангоми хориҷ шудан аз доираи (функсия) ки дар он defer эълон шудааст, функсияҳои таъхиршуда дар тартиби муқобил даъват карда мешаванд. Ин барои озод кардани захираҳо, бастани файлҳо, кушодани mutex ва дигар амалиётҳои тозакунӣ кӯмак мекунад.