Sobes.tech
Middle

Kas ir defer operators Go valodā?

sobes.tech AI

Atbilde no AI

defer operators tiek izmantots funkcijas vai metodes atliktai izpildei. Funkcijas, kas marķētas ar defer, tiek izpildītas tieši pirms to funkciju iziešanas.

defer darbības principi:

  • Tiek izpildīts, iznākot no pašreizējās funkcijas, neatkarīgi no tā, vai tas ir normāls iziešanas veids vai panika.
  • Vairāki defer vienā funkcijā tiek izpildīti LIFO (Last-In, First-Out) secībā.
  • Noderīgs resursu tīrīšanai, piemēram, failu vai tīkla savienojumu aizvēršanai.

Piemērs:

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Atveram failu.")

	file, err := os.Open("example.txt")
	if err != nil {
		// Kļūdas apstrāde
		return
	}

	// Aizkavēta faila aizvēršana
	defer file.Close()
	defer fmt.Println("Fails tiks aizvērts.") // Šis `defer` tiks izpildīts pirmais (LIFO)

	fmt.Println("Apstrādā failu...")

	// Papildu darbs ar failu
}

Programmas izvade:

Atveram failu.
Apstrādā failu...
Fails tiks aizvērts.