Palavra-chave Defer em Golang

Em Go, as instruções defer atrasam a execução de uma função ou método ou de um método anônimo até que as funções próximas retornem. Em outras palavras, os argumentos para adiar funções ou métodos são avaliados imediatamente, mas não são executados até que as funções próximas retornem. Você pode criar um método adiado, uma função ou uma função anônima usando a palavra-chave defer.

Palavra-chave Defer em Golang

Sintaxe:

// Hàm
defer func func_name(parameter_list Type)return_type{
// Code
}

// Phương thức
defer func (receiver Type) method_name(parameter_list){
// Code
}

defer func (parameter_list)(return_type){
// code
}()

Nota importante:

  • Na linguagem Go, várias instruções defer são permitidas no mesmo programa e são executadas na ordem LIFO (Último a Entrar, Primeiro a Sair), conforme mostrado no Exemplo 2.
  • Em instruções defer, os argumentos são avaliados quando a instrução defer é executada, não quando ela é chamada.
  • As instruções de adiamento são frequentemente usadas para garantir que os arquivos sejam fechados quando sua necessidade terminar, ou para fechar canais, ou para detectar problemas no programa.

Agora vamos ver um exemplo para entender melhor.

Exemplo 1:

// Chương trình Go minh họa
// khái niệm của lệnh defer
package main

import "fmt"

// Các hàm
func mul(a1, a2 int) int {

	res := a1 * a2
	fmt.Println("Result: ", res)
	return 0
}

func show() {
	fmt.Println("Hello!, Quantrimang.com")
}

// Hàm chính
func main() {

	// Gọi hàm mul() 
	// Tại đây hàm mul hoạt động
	// như một hàm bình thường
	mul(23, 45)

	// Gọi hàm mul()
	// Dùng từ khóa defer 
	// Hàm the mul() 
	// là hàm defer
	defer mul(23, 56)

	// Gọi hàm show() 
	show()
}

Resultado:

Result:  1035
Hello!, Quantrimang.com
Result:  1288

Explicação: No exemplo acima, temos duas funções chamadas mul() e show() . Enquanto a função show() é chamada normalmente na função main() , a função mul() é chamada de duas maneiras diferentes:

  • Primeiro, chamamos a função mul normalmente (sem a palavra-chave defer), ou seja, mul(23, 45) e ela é executada quando a função é chamada (Saída: Resultado: 1035).
  • Em segundo lugar, chamamos a função mul() como uma função defer usando a palavra-chave defer, ou seja, defer mul(23, 56) e ela executa (Saída: Resultado: 1288) quando todos os métodos circundantes retornam.

Exemplo 2:

// Minh họa chương trình Go
// dùng nhiều lệnh defer, để minh họa chính sách LIFO 
package main

import "fmt"

// Các hàm
func add(a1, a2 int) int {
	res := a1 + a2
	fmt.Println("Result: ", res)
	return 0
}

// Hàm chính
func main() {

	fmt.Println("Start")

	// Nhiều lệnh defer
	// Triển khai theo thứ tự LIFO 
	defer fmt.Println("End")
	defer add(34, 56)
	defer add(10, 10)
}

Resultado:

Start
Result:  20
Result:  90
End

Deixar um comentário

IPTU em São Bernardo do Campo: como emitir a segunda via e consultar débitos

IPTU em São Bernardo do Campo: como emitir a segunda via e consultar débitos

Veja como emitir a segunda via do IPTU em São Bernardo do Campo, consultar débitos de outros exercícios e pagar uma guia vencida com segurança.

Como descartar máquina de lavar em São Paulo: guia prático

Como descartar máquina de lavar em São Paulo: guia prático

Saiba como descartar máquina de lavar em São Paulo com segurança: Cata-Bagulho, logística reversa, preparação, transporte e erros que devem ser evitados.

Como descartar lâmpadas fluorescentes em Duque de Caxias com segurança

Como descartar lâmpadas fluorescentes em Duque de Caxias com segurança

Saiba onde e como descartar lâmpadas fluorescentes em Duque de Caxias, como acondicioná-las, o que fazer se quebrarem e quais pontos confirmar antes de sair.

Como descartar power bank em Teresina: onde levar e o que fazer com segurança

Como descartar power bank em Teresina: onde levar e o que fazer com segurança

Saiba como descartar power bank em Teresina, inclusive se estiver estufado ou danificado, e como localizar um ponto de logística reversa atualizado.

Como descartar micro-ondas em Campinas: guia prático e seguro

Como descartar micro-ondas em Campinas: guia prático e seguro

Saiba como descartar micro-ondas em Campinas: prepare o aparelho, escolha ecoponto ou logística reversa e evite erros no transporte.

Como descartar power bank em Recife? Veja onde levar e o que fazer com a bateria

Como descartar power bank em Recife? Veja onde levar e o que fazer com a bateria

Saiba como descartar power bank em Recife com segurança: compare EcoEstações, PEVs, lojas e pontos de logística reversa, além dos cuidados com aparelhos estufados ou danificados.

Como descartar micro-ondas em Belém? Guia passo a passo

Como descartar micro-ondas em Belém? Guia passo a passo

Saiba como descartar micro-ondas em Belém: Ecoponto da Sacramenta, Hub do Pix, logística reversa, preparo e erros a evitar.

Como descartar geladeira com segurança: guia de preparação e coleta

Como descartar geladeira com segurança: guia de preparação e coleta

Aprenda como descartar geladeira corretamente: encontre um ponto por CEP, prepare o aparelho, organize o transporte e evite erros comuns.

Como descartar televisão em São Paulo: opções seguras e gratuitas

Como descartar televisão em São Paulo: opções seguras e gratuitas

Saiba como descartar televisão em São Paulo: consulte pontos ABREE, confirme Ecopontos e prepare a TV para transporte e reciclagem.

Como descartar bateria de lítio em Salvador com segurança

Como descartar bateria de lítio em Salvador com segurança

Veja onde descartar bateria de lítio em Salvador, como encontrar pontos Green Eletron e ABREE e o que fazer com baterias inchadas ou danificadas.