Go channels

No post anterior, eu falei sobre go routines e criei um programa simples que envia um email de forma concorrente a execução do programa. No programa, nós chamavamos um método para enviar email de forma concorrente que apenas dava um println no final do envio para nos notificar que o email havia sido enviado com sucesso. Mas e se quisessemos que após o envio do email, fosse realizado algum tipo de operação, como efetuar um log, notificar alguém, etc. Poderíamos neste caso chamar uma func no final do envio do email. Mas podemos também utilizar channels, que é uma maneira de conversarmos entre go routines, sincronizando a sua execução. Para isso, basta criar um channel, passá-lo para a func de envio de email e, após o envio, enviar uma mensagem ao channel dizendo que está tudo ok! Agora podemos criar outra func que rode de forma concorrente e que receba esta mensagem do channel e faz o que for preciso.

Continuar lendo

Entendendo go routines

Go routines é o jeito no go de executar código de forma concorrente com outras funcs. Para executar um método de forma concorrente, basta utilizar a palavra chave go antes da sua func. Para exemplificar essa questão, vamos pensar na seguinte situação: sua app precisa enviar um email, mas como o envio de email não é uma operação tão rápida, você não quer deixar o seu usuário esperando para poder continuar utilizando o seu app. Para isso, vamos pedir para uma go routine enviar o nosso email e continuar com a execução do email.
Continuar lendo