Sobes.tech
Middle

Kādā secībā tiek izpildītas atliktās funkcijas (defer) Go?

sobes.tech AI

Atbilde no AI

Atliktās funkcijas tiek izpildītas pretējā secībā, kādā tās tika definētas, tas ir, LIFO (Last-In, First-Out).

package main

import "fmt"

func main() {
	defer fmt.Println("pirmais") // Definēts pēdējais
	defer fmt.Println("otrais") // Definēts pirms pēdējā
	defer fmt.Println("trešais") // Definēts pirmais
}

Rezultātā, izpildot šo kodu, tiks parādīts:

trešais
otrais
pirmais

Iziet no scope (funkcijas), kurā tika deklarēts defer, atliktās funkcijas tiek izsauktas pretējā secībā. Tas ir noderīgi resursu atbrīvošanai, failu aizvēršanai, mutexu atbloķēšanai un citām tīrīšanas operācijām.