trilha

Tecnologias/01 - Linguagens/01 - Go2 minmoc

MOC Go

01 - Go

Uma linguagem desenhada para times grandes lendo código velho, não para escrever código curto. Entender isso explica quase todas as decisões estranhas do Go.

Definições e explicações

A ideia que atravessa a seção

Go troca expressividade por previsibilidade. Não há herança, exceções, sobrecarga de operador, macro nem construtor. O resultado é uma linguagem em que quase não existe "jeito esperto" — e por isso o código de um estranho, escrito há três anos, ainda se lê de cima para baixo.

O preço é visível em cada arquivo: você escreve if err != nil centenas de vezes. Não é um descuido do design, é o design: o fluxo de erro fica no mesmo lugar onde os olhos já estão, em vez de num catch distante.

Quando você achar uma limitação do Go irritante, procure qual leitura ela protege. Costuma haver uma.

A exceção a essa regra é a concorrência: ali o Go não protege você. go f() custa uma palavra a mais de digitação e abre a porta para data race, vazamento de goroutine e deadlock — nada disso pego pelo compilador. É por isso que 8. Race Conditions e o Modelo de Memória e 9. Mutex vs Channel fecham a seção: a parte mais fácil de escrever é a mais difícil de acertar.


Parte de Linguagens · go.dev/doc

Buscar

Busca por título, seção e texto das notas