Golang adiar

Golang adiar
A função de adiamento em Go permite atrasar a execução de uma função até que a outra função saia. Na maioria dos casos, usamos a palavra -chave difer para adiar a execução de uma função posteriormente no programa para limpeza. Um exemplo seria fechar um arquivo, fechar um canal ou fechar um mutex. Isso não é diferente se você estiver familiarizado com o finalmente ou garantir em outras linguagens de programação.

Vamos usar este guia para aprender a usar a palavra -chave adiada em Go.

Golang adiar a palavra -chave.

Para adicionar o mecanismo de adiamento a uma função, use a palavra -chave difer seguida pela função ou nome do método. Um código de exemplo é como mostrado:

Pacote principal
importar "fmt"
func main ()
fmt.Println ("Eu corro primeiro")
adiar fmt.Println ("Eu corro o último")
fmt.Println ("Eu corro segundo")

No exemplo acima, usamos a palavra -chave difer para as palavras para adiar a execução da função na quarta linha. Isso significa que esta função será executada por último.

Um exemplo de saída é como mostrado:

$ go run adie.ir
Eu corro primeiro
Eu corro em segundo lugar
Eu corro por último

Isso significa que o método é executado apenas depois que todos os outros métodos retornam.

Lembre -se de que a função ou método chamado com uma palavra -chave de adiamento será executada enquanto os outros métodos/funções retornarão. O retorno pode ser através de um pânico ou execução normal.

Considere o exemplo abaixo em que um método é chamado, apesar de um pânico.

Pacote principal
importar "fmt"
func main ()
adiar fmt.Println ("eu corro")
pânico ("pânico!!!")
fmt.Println ("eu não corro")

O código acima deve retornar:

$ go run adie.ir
eu corro
Pânico: pânico!!!
Goroutine 1 [Running]:
principal.principal()
+0x73
status de saída 2

Ordem de execução

Os argumentos de uma função diferida são avaliados imediatamente, embora a execução seja atrasada até que a função circundante retorne.

Se você tiver mais de uma chamada de função diferida, vá organizá-los em uma lista e executá-los na última parte da primeira saída (LIFO).

Podemos ilustrar isso usando um simples loop, como mostrado abaixo:

Pacote principal
importar "fmt"
func main ()
fmt.Println ("eu começo")
para i: = 1; eu <= 5; i++
adiar fmt.Println (i)

fmt.Println ("I Second")

Podemos ver a ordem de execução na saída:

eu começo
Eu segundo
5
4
3
2
1

Use a função de adiamento para retornar um valor

Você pode usar uma função diferida anônima para acessar e alterar os parâmetros de retorno da função circundante.

Um exemplo é como mostrado:

func diz () (str string)
adiar func ()
str = "adeus"
()
Retorne "Olá!"

Neste exemplo, a função retorna a string "adeus" em vez de "olá".

Adiar o uso prático - fechar o arquivo

Um caso de uso do mundo real da palavra-chave de adiamento é fechar um arquivo. Veja o exemplo mostrado abaixo:

Arquivo, Err: = OS.Aberto ("Olá.TXT")
se err != nil
registro.Fatal (ERR)

Arquivo de adiamento.Fechar()
scanner: = bufio.NewsCanner (arquivo)
Scanner.Split (Bufio.Scanwords)
para scanner.Varredura()
fmt.Println (scanner.Texto())

se err: = scanner.Errar(); errar != nil
registro.Fatal (ERR)

Abrimos o arquivo para ler usando o método open () no exemplo acima. Em seguida, usamos a palavra -chave difer para atrasar a operação de fechamento após a conclusão da operação de leitura.

Conclusão

Neste artigo, discutimos como a palavra -chave para adiar e como podemos usá -la para adiar a execução de uma função.

Obrigado pela leitura!!