Aula 40
Como Usar o Defer para Adiar a Chamada de Funções na Linguagem Golang
Summary
Resumo da Aula sobre Defer em Go
Nesta aula, aprendemos o conceito de "defer" em Go, que é utilizado para adiar a execução de uma função até o final de sua função pai.
Introdução ao Defer
- Começamos imprimindo um texto na tela usando a função
println
do pacoteFMT
. - Realizamos um exemplo simples onde imprimimos "Oi" e "Tudo bem?" em sequência.
Funcionamento do Defer
- Ao usar
defer
antes da chamada da funçãoprintln
para imprimir "Oi", a execução dessa impressão é adiada até o final da funçãomain
. - Portanto, a impressão de "Tudo bem?" acontece antes de "Oi", mesmo que "Oi" tenha sido chamado primeiro.
Execução do Defer
defer
coloca a função "Oi" na pilha de chamadas (call stack) para execução futura.- A próxima linha é executada normalmente, imprimindo "Tudo bem?".
- Ao alcançar o final da função
main
, a função "Oi" é executada.
Exemplo Adicional
- Se utilizarmos
defer
antes de "Tudo bem?", o processo será:- "Oi" é adiado e colocado na stack.
- "Tudo bem?" é adiado em seguida e colocado no topo da stack.
- Ao final da função
main
, a função no topo da stack (neste caso "Tudo bem?") é executada primeiro, seguida por "Oi".
Conclusão
O conceito de "defer" permite adiar a execução de funções, gerenciando a ordem em que elas são chamadas, o que pode ser bastante útil em diversas situações.
Até a próxima aula!
Video Transcript
Nesta aula, nós vamos aprender o conceito de A de A, a execução da chamada de uma função
usando o defer.
Então, nós vamos aprender a execução de uma função, a chamada de uma função usando
o comando defer.
Antes de a gente começar a usar o defer, vamos primeiro começar com uma coisa bem simples.
Vamos primeiro imprimir um texto à tela, a gente já sabe como fazer isso, a gente vai
usar a função println e vendo o pacote FMT.
Vamos passar como argumento um texto, vou perguntar tudo bem, vamos importar o FMT
aqui em cima, vamos rodar esse programa e ver o que dá, a gente já sabe que vai dar
parecia mensagem no console, tudo legal.
Agora, vamos aqui, antes dessa mensagem, vamos dizer oi, por exemplo.
A gente já sabe que vai imprimir duas linhas, primeiro a linha oi, a segunda vai ser tudo
bem, em sequência, primeiro na ordem, primeiro oi, depois tudo bem.
Mas olha o que acontece se a gente adiar a execução do primeiro aqui.
A gente vai usar a palavra defer, no inglês, para adiar.
Ver o que acontece agora, quando a gente usa o defer antes da chamada dessa função para
imprimir ao console.
Então agora, o que é que aconteceu?
Tudo bem ver o primeiro antes do oi.
O que é que aconteceu aqui?
A execução, a chamada do println para imprimir oi foi adiada até o final da execução
da função main.
Então, o que é que vai acontecer?
Quando ele bate nessa linha aqui, você pode imaginar, ele viu que é defer, vou adiar
a execução dessa função, somente até o final de main.
Então, ele vai pegar e fazer isso, vai para a próxima linha e chama tudo bem.
Depois de fazer todas as coisas, que a gente não tem nada aqui, mas se tivesse outras
coisas e ir fazer todas essas coisas, até o final, bater no final da função main.
Quando bater no final, é que vai executar o oi.
Isso que está acontecendo.
Então, esse é o defer, tá?
Para adiar a execução.
Tinha uma função.
Então o que acontece se eu defer tudo bem?
Vamos ver aqui.
Então, o que é que a gente espera?
Bateu na linha 6, pegou oi pois na fila, né?
Para executar a stack, na verdade, não é fila.
Stack, né?
Vamos chamar de call stack.
Aí, põe lá na stack oi, vai ser adiado, terminou.
Pega o próximo, ok, vai adiar o print talento tudo bem, tá certo.
Pega aqui, põe no topo, tá?
No topo da call stack.
Pronto.
Depois diz, bateu no final da função main.
Ok, vamos dar uma olhada lá na stack, na fila, tá certo?
Vamos pegar o primeiro e vamos executar.
Então, ele vai executar tudo bem.
Vamos pegar o segundo, que agora é o topo da stack.
Vamos executar depois de tudo bem.
Então, vai dar o quê?
Tudo bem e oi.
Vamos ver, tá certo?
Então, esse é o conceito de adiar a execução de a função.
Vamos defer.
Então, por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: