Tudo o que você precisa saber sobre Go 1.18

Já com sua primeira Release Candidate nas ruas, a versão mais aguardada dos últimos tempos está cada vez mais próxima de ser lançada.

Nesse post vou abordar as principais mudanças que essa versão irá trazer.

Any

Na nova versão da linguagem, foi adicionado o novo tipo de dado, o any. Esse tipo nada mais é do que uma alias para interface{}.

Isso não impede ou quebra nenhum código que utilizar interface{}, porém é recomendado mudar para any por questões de leitura.

Se você achar estranho, não se esqueça que o tipo byte é só um alias para uint8.

Leia mais »

Buildando aplicações com Bazel (parte 1)

Bazel é um ferramenta criada e mantida pela Google que ajuda no processo de build de várias linguagens, sendo uma delas nosso querido Golang.

Duas de suas grandes vantagens são:

  • Build de multiplas aplicações em monorepo sem precisar ficar entrando e saindo de pastas.
  • Cache remoto das etapas de build (para mais detalhes, leia o post “Como Bazel funciona internamente“).

Embora para maioria das linguagens toda criação e manutenção dos arquivos do Bazel tenha que ser feita manualmente, para o Go temos o gazelle, uma ferramenta que nos auxilia nesse processo.

Se você ainda não tem o Bazel instalado na sua máquina, siga o tutorial do próprio site oficial segundo o OS que você utiliza. Se você já tem, execute um bazel version para garantir que você está utilizando a última versão (4.2.2).

Como aplicação exemplo, vamos utilizar o mesmo código do post Implementando uma API com gorilla/mux, mas separando as duas funções de “handler” em um novo package chamado handlers.

Leia mais »

Como o bazel funciona internamente?

Por anos Bazel sempre me pareceu uma ferramenta muito boa e ao mesmo tempo, por uma soma da sua linguagem própria (starlark) e a estrutura dos arquivos, muito complicada de aprender.

Somente depois de entender o que acontece “atrás das cortinas” e os conceitos da ferramenta é que finalmente pude começar a tirar o melhor dela. Por isso resolvi criar uma série de posts para compartilhar meu aprendizado.

Se você já teve algum contato com Bazel, vou pedir para que não se preocupe com os arquivos WORKSPACE, BUILD e .bzl por enquanto (se você não teve contato também não precisa se preocupar). Nesse post, vamos deixar esses arquivos de lado e falar um pouco sobre como o bazel funciona internamente.

Leia mais »