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-ების გასაღების და სხვა სუფთავების ოპერაციებისათვის.