Série: Café com Go Parte 1

Café com Go: O choque cultural e a vida sem classes

Postado em

O choque cultural (O “preconceito” inicial com a simplicidade do Go)

Quando eu dei meus primeiros passos no Go, confesso que fui quase cético. Venho de um background onde Python e JavaScript eram meus companheiros de jornada, e ambos têm aquele “código‑a‑vista” que parece falar a nossa língua. Eu já tinha me acostumado a criar objetos, herdar comportamentos e distribuir responsabilidades por meio de classe, quase como se fosse um barman que tem um copo para cada tipo de café.

Então, ao abrir o repositório de um projeto Go e me deparar com um arquivo main.go que, a primeira vista, parecia mais um poema minimalista do que um programa completo, pensei:

Será que isso realmente vai me permitir construir algo robusto? Ou será só um brinquedo de linha de comando?

A primeira impressão foi de que o Go era simples demais. Não havia a palavra‑chave class, nem a hierarquia de herança que eu tanto amava (e, as vezes, abusava). Em vez disso, havia structs, interfaces e, sobretudo, aquela famosa frase de Rob Pike:

Go is not a language that tries to be everything for everyone.

Eu sentia falta daquele “cobertor quente” das classes, onde eu podia colocar tudo, atributos, métodos, construtores, num único lugar e chamar de “objeto”.

Mas, como todo bom café, o sabor do Go começou a revelar suas nuances depois do primeiro gole. A ausência de classes não era um vazio, mas uma escolha deliberada para evitar a complexidade desnecessária que, muitas vezes, transforma código em labirinto.

Em vez de lutar contra a herança múltipla ou com o “diamond problem”, eu encontrei duas ferramentas simples porém poderosas: structs (para agrupar dados) e interfaces (para definir contratos). Elas me forçaram a pensar em composição ao invés de herança.. um conceito que, embora inicialmente estranho, acabou sendo mais natural para resolver problemas reais.

Além disso, a clareza da sintaxe (sim, aquele := que parece um sorriso tímido) trouxe uma sensação de fluidez que eu não esperava. Cada linha parecia dizer exatamente o que estava acontecendo, sem a necessidade de ler dezenas de linhas de boilerplate para entender a estrutura de um objeto. Foi como trocar um espresso super carregado por um filtro bem equilibrado, menos amargor, mais clareza.

Então, enquanto ainda sentia falta das “classes elegantes” que eu conhecia, comecei a perceber que o Go não estava tentando ser um substituto direto das minhas linguagens favoritas. Ele estava oferecendo um caminho diferente.. mais direto, mais seguro e, surpreendentemente, mais agradável de percorrer. Essa mudança de perspectiva foi o ponto de partida da minha jornada, de “isso é simples demais para mim” a “há algo aqui que realmente ressoa com a maneira como eu penso sobre código”.

Nos próximos capítulos, vamos explorar como essa simplicidade se traduz em prática, desde a sintaxe curiosa até o poder das goroutines e canais, passando pelos loops que parecem um deserto e pelos erros que, ao contrário do que eu imaginava, podem virar nossos melhores amigos.

Mas antes de tudo, deixo aqui um convite.. imagine que estamos sentados numa mesa de café, xícara à mão, trocando histórias de código. É assim que pretendo contar essa história.. sem manuais, sem formalidades excessivas, apenas a conversa sincera de quem já tropeçou, aprendeu e acabou se apaixonando por Go.

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