Sobes.tech
Middle

O que é o operador defer na linguagem Go?

sobes.tech IA

Resposta da IA

O operador defer é utilizado para executar funções ou métodos de forma diferida. As funções marcadas com defer são executadas imediatamente antes de sair da função que as contém.

Princípios de funcionamento do defer:

  • Executa-se ao sair da função atual, seja por execução normal ou por pânico.
  • Múltiplos defer na mesma função são executados na ordem LIFO (Last-In, First-Out).
  • É útil para limpar recursos, como fechar ficheiros ou conexões de rede.

Exemplo de uso:

package main

import (
	"fmt"
	"os"
)

func main() {
	fmt.Println("Abrindo o ficheiro.")

	file, err := os.Open("example.txt")
	if err != nil {
		// Tratamento do erro
		return
	}

	// Fecho diferido do ficheiro
	defer file.Close()
	defer fmt.Println("O ficheiro será fechado.") // Este defer será executado primeiro (LIFO)

	fmt.Println("A processar o ficheiro...")

	// Trabalho adicional com o ficheiro
}

Saída do programa:

Abrindo o ficheiro.
A processar o ficheiro...
O ficheiro será fechado.