Sobes.tech
Middle

Mis on defer operaator Go keeles?

sobes.tech AI

Vastus AI-lt

defer operaatorit kasutatakse funktsiooni või meetodi hilinenud täitmiseks. Funktsioonid, mis on märgitud defer-iga, täidetakse täpselt enne nende sisaldava funktsiooni väljundit.

defer-i tööpõhimõtted:

  • Täidetakse, kui väljutakse praegusest funktsioonist, olenemata sellest, kas see on normaalne või panik.
  • Mitmed defer-id samas funktsioonis täidetakse LIFO (Last-In, First-Out) järjekorras.
  • Kasulik ressursside puhastamiseks, näiteks failide või võrguliiklusete sulgemiseks.

Näide kasutamisest:

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Fail avaneb.")

	file, err := os.Open("example.txt")
	if err != nil {
		// Vea töötlemine
		return
	}

	// Hilinenud faili sulgemine
	defer file.Close()
	defer fmt.Println("Fail suletakse.") // See `defer` täidetakse esimese asjana (LIFO)

	fmt.Println("Faili töötlemine...")

	// Täiendav töö faili peal
}

Programmi väljund:

Fail avaneb.
Faili töötlemine...
Fail suletakse.