Sobes.tech
Middle

Ի՞նչ է defer օպերատորը Go լեզվում։

sobes.tech AI

Պատասխան AI-ից

defer օպերատորը օգտագործվում է ֆունկցիա կամ մեթոդի հետաձգված կատարման համար: defer նշված ֆունկցիաները կամ մեթոդները կատարվում են հենց այն ֆունկցիայի ավարտից առաջ, որը դրանք պարունակում է:

defer-ի աշխատանքային սկզբունքները՝

  • կատարվում է ներկայիս ֆունկցիայից դուրս գալու ժամանակ, լինի դա նորմալ կամ Panic-ով;
  • միաժամանակ մի քանի defer-ներ կատարվում են LIFO (Last-In, First-Out) կարգով;
  • օգտակար է ռեսուրսների մաքրման համար, օրինակ՝ ֆայլերի կամ ցանցային կապերի փակման համար:

Օգտագործման օրինակ՝

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Ֆայլը բացվում է.")

	file, err := os.Open("example.txt")
	if err != nil {
		// Հետամնա սխալի մշակումը
		return
	}

	// Ֆայլի հետաձգված փակումը
	defer file.Close()
	defer fmt.Println("Ֆայլը փակվելու է.") // Այս defer-ը առաջինը կիրականացվի (LIFO)

	fmt.Println("Ֆայլը մշակվում է...")

	// Ավելին աշխատանք ֆայլի հետ
}

Ծրագիրը կտպի՝

Ֆայլը բացվում է.
Ֆայլը մշակվում է...
Ֆայլը փակվելու է.