Nesse post vamos implementar uma função que utiliza context. No exemplo de chamada, vou utilizar o context WithTimeout. Dessa forma, conseguiremos fazer a função ser cancelada automaticamente, caso o tempo de execução dela ultrapasse o tempo estipulado no context. Vamos iniciar criando uma função com o nome doSomeHeavyWork. Para simular um processamento longo, vamos adicionar…
we are developers
- Publicou15Artigo(s)
- Visualizados22500Vezes
- Desde2010
Na edição de 2022 da GopherCon Brasil, tive o prazer de palestrar sobre Fuzz Test. Foi muito bacana, pois durante a palestra, assim como nos corredores do evento, fizeram vários questionamentos que eu ainda não tinha feito sobre essa feature do Go. Se você ainda não conhece esse tipo de teste, convido você a ler…
SOLID é um acrônimo que representa cinco princípios no design de softwares orientados a objetos, sendo: Single Responsability Open-Closed Liskov Substitution Interface Segregation Dependency Inversion Principle Embora Go não seja uma linguagem orientada a objetos, ainda assim conseguimos utilizar os princípios de SOLID. Abaixo, vamos ver com mais detalhes cada um dos princípios. Single Responsability…
Uma das formas mais comuns de se fazer cache em aplicações Go é utilizando um map. Se você já fez isso, deve ter notado um aumento gradual no consumo de memória, e que normalmente após um restart da máquina ou pod volta ao “normal”. Isso acontece devido a forma como o map funciona. Por isso,…
Se você já ouviu falar mas não sabe ao certo o que é Dependency Injection ou como a utilizar em Golang, nesse artigo espero te ajudar a sanar as duas dúvidas. Para que todos estejam na mesma página, antes de ver como utilizar, vamos falar um pouco sobre o que é essa tal Dependency Injection…
O package Context do Go é algo que vemos sendo cada vez mais utilizados por grandes packages. No entanto, não é nada estranho ver pessoas sem saber qual context utilizar dentre os diferentes tipos disponíveis. Nesse post, vou falar sobre os diferentes tipos de context que temos, como fazemos para obtê-los e onde normalmente são…
Um pensamento muito comum para quem está chegando na linguagem Go, ou só conhece a linguagem pelo o que “ouviu na rua”, é achar que as goroutines são threads. Acontece que na prática, goroutines e threads, embora parecidas, são coisas bem diferentes. Vejamos. Uma thread, nada mais é do que um espaço que o sistema…
Entenda mais sobre Go. Se já conhece outras linguagens, podemos comparar o arquivo go.mod ao package.json do JS ou composer.json do PHP.
Existem basicamente duas formas para resolver problemas de race condition. Mutex e Channels. Se você não está familiarizado com o termo race condition, não se preocupe. Esse termo é utilizado para descrever um pedaço do código que será executado por múltiplas goroutines e que, a cada execução, seu resultado pode variar devido a forma como…
No último final de semana, eu passei praticamente a tarde toda do domingo tentando escrever testes unitários para o GORM utilizando sqlmock. O problema é que todos os tutoriais que eu encontrei eram de versões antigas, tanto do GORM, quanto do sqlmock. Somente na segunda-feira, depois de mais umas 2h tentando entender como eles funcionavam…