-
Goroutines. Uma das coisas que Go acabou sendo bem conhecido é a questão da facilidade em trabalhar com concorrência.
-
Channels Se quiser ir mais a fundo nesse ponto, fale sobre channels também, que é uma maneira incrível de fazer essas sub rotinas se comunicarem.
-
Servidor web Me lembro de alguns programadores da CloudWalk ficarem surpresos com isso. Você pode criar um servidor web simples e funcional para demonstrar que com Go é possível ter um servidor HTTP/TCP/UDP sem precisar de nada além da linguagem. E tudo somente com um binário.
É possível fazer tudo isso sem nenhuma dependência externa, uma das características que acho muito boa nessa linguagem (e provavelmente em muitas outras).
- Gerar binários para OSes diferentes Você pode compilar o seu código Go para Windows, Linux e Mac sem dificuldade.
Rodando o comando go tool dist list
você vai ter uma lista das distribuições suportadas.
Você pode especificar o OS e arquitetura usando variáveis de ambiente durante a compilação, por exemplo:
$ GOOS=windows GOARCH=arm64 go build -o pura_magica
O compilador vai gerar o .exe
com o nome pura_magica
para arquitetura arm64.
-
Ferramentas A linguagem vem com um conjunto de ferramentas que é muito interessante e ajuda muito o desenvolvedor. Alguns exemplos:
go vet
: faz validação do seu código e encontra possíveis problemas (normalmente os editores, como o VSCode, já usam)go generate
: gera código durante a compilação, normalmente é usado para automaçãogo run -race
: verifica possíveis "race conditions" no seu código, ajuda muito!pprof
: é uma lib da linguagem que faz gera, graficamente, um perfil da sua aplicação em detalhes incríveis. Caso esteja com problema de consumo de memória, lentidação e etc, pprof é quem vai te apontar o problema. -
Tratamento de erros Pra mim é um dos pontos forte da linguagem mas pra maioria é um saco:
if err != nil {
fmt.Println("error calling database", err)
}
Eu acho muito bom ter o hábito de verificar todos os possíveis erros que as nossas chamadas podem retornar. Claro que esse não é o melhor modelo mas acho que força a criação do hábito para tratar os erros.