Série: Café com Go Parte 2

O mistério da sintaxe do Go

Postado em

Tipo depois do nome: “idade int” vs. “int idade

Quando eu comecei a escrever Go, a primeira coisa que me fez coçar a cabeça foi a ordem dos componentes nas declarações. Em Python, JavaScript ou mesmo em C, estou habituado a colocar o tipo antes do identificador, algo como int idade. De repente, o compilador me pedia para escrever idade int. Foi como se o barman, ao invés de servir o café antes de anunciar o tamanho, dissesse “Grande latte, por favor” e eu tivesse que responder “Latte grande”.

Na prática, a escolha de colocar o nome da variável antes do tipo tem um motivo bem pragmático.. facilita a leitura em linhas longas. Quando você tem várias variáveis declaradas na mesma linha, o olho salta primeiro para o que realmente importa, o nome.. e só depois vê o que ele representa. Por exemplo:

nome, sobrenome string
altura, peso   float64

Em vez de ter que escanear repetidamente o tipo antes de descobrir quem é quem. No começo parece “estranho”, mas logo percebo que o Go está tentando nos poupar um pequeno esforço cognitivo a cada linha. É como escolher um copo de café que já vem com a tampa, você sabe imediatamente o que tem dentro, sem precisar olhar duas vezes.


O primeiro := rebelde

Outra surpresa (e dor de cabeça) foi o operador de declaração curta :=. Em Python, eu usaria simplesmente x = 10 para criar ou atualizar uma variável, e em JavaScript faria o mesmo com let x = 10. No Go, := declara a variável e atribui um valor ao mesmo tempo, mas apenas se a variável ainda não existir no escopo atual.

A primeira vez que tentei fazer isso, escrevi algo assim:

contador := 0 ok, cria a variável … contador := contador + 1 aqui o compilador gritou!

![[cp-img01.png.png]]

O erro foi claro: “no new variables on left side of :=” . O compilador estava dizendo que eu estava tentando redeclarar contador, algo que já existia. Naquele instante, senti que o Go estava me lembrando de que, apesar de ser permissivo, ele também tem regras rígidas, como aquele barman que insiste que você não pode pedir “mais açúcar” depois de já ter pedido o café.

A solução? Trocar o := por um simples = quando a intenção é atualizar:

contador = contador + 1 // funciona perfeitamente

Depois desse tropeço, passei a usar := apenas na primeira aparição de cada variável, e o resto do código ficou mais previsível. É como aprender a usar a colher certa para mexer o café, a primeira colher serve para colocar o açúcar, a segunda só para mexer.


Código limpo, sem ponto e vírgula

Talvez a mudança mais sutil, porém reconfortante, seja a ausência de ponto e vírgula (;) espalhados por todo o código.

Em C‑like languages, cada linha termina com um ;, criando um ritmo quase mecânico. No Go, o ponto e vírgula ainda existe, mas é inserido automaticamente pelo parser, então nós nunca precisamos digitá‑lo (exceto em casos raros de múltiplas instruções na mesma linha).

Essa “limpeza” traz duas sensações:

  1. Leveza visual - o código parece mais respirável, como uma xícara de café que não está cheia de espuma desnecessária.
  2. Menos erros de sintaxe - não preciso ficar caçando um ; esquecido que faria o compilador reclamar com mensagens crípticas.

É como servir um espresso puro.. nada de aditivos, só o essencial. Quando olho para um arquivo .go, vejo blocos claros de lógica, sem a distração de pontuações supérfluas. Isso me ajuda a focar no fluxo do programa, exatamente como focar no aroma do café antes de dar o primeiro gole.


Conclusão do capítulo (e convite)

Neste primeiro mergulho na sintaxe, vimos como o Go subverte algumas expectativas.. tipo invertido, := seletivo e a eliminação dos ;. Cada “mistério” acabou revelando um propósito, tornar o código mais legível, menos propenso a erros triviais e, de certo modo, mais humano.

Agora que já domamos (ou quase domamos) a sintaxe, o próximo passo é atravessar o deserto dos loops. Lá, o único comando que você encontrará é o for, e ele tem mais truques na manga do que parece a primeira vista.

Categoria: Backend, Engenharia de Sistemas
Gostou do conteúdo?

Se este artigo foi útil para você, considere apoiar meu trabalho!

Me compre um café

Comentários