Sobes.tech
Middle

Какво е операторът defer в езика Go?

sobes.tech AI

Отговор от AI

Операторът defer се използва за отлагане на изпълнението на функция или метод. Функциите, маркирани с defer, се изпълняват точно преди изхода от функцията, която ги съдържа.

Принципи на работа на defer:

  • Изпълнява се при изход от текущата функция, независимо дали е нормално или чрез паника.
  • Множество 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("Обработка на файла...")

	// Допълнителна работа с файла
}

Изход на програмата:

Отваряне на файл.
Обработка на файла...
Файлът ще бъде затворен.