~/VibeHandbook
PDF grátis

Linguagens

go.dev

Go

O que é

Go (Golang) é uma linguagem compilada e de tipagem estática, criada pelo Google com foco em simplicidade, compilação rápida e concorrência. Ela gera um único binário estático — um arquivo autocontido que você pode copiar e executar, sem precisar instalar mais nada. Tem um conjunto de recursos pequeno e deliberado, e foi construída para escrever serviços de rede confiáveis e ferramentas de linha de comando.

Pontos fortes

  • Compila para um único binário sem dependências — trivial de implantar.
  • Concorrência embutida — como uma loja que abre vários caixas ao mesmo tempo para atender muitos clientes simultaneamente — usando goroutines e channels.
  • Compilação rápida e execução rápida, com coleta de lixo (garbage collection).
  • Biblioteca padrão robusta — ferramentas embutidas como (HyperText Transfer Protocol) para requisições web, (JavaScript Object Notation) para dados, e criptografia — além de formatação padronizada e obrigatória (gofmt).

Trade-offs

  • Deliberadamente minimalista: tratamento de erros verboso (if err != nil) e expressividade limitada.
  • Generics chegaram tarde e ainda são modestos se comparados a outras linguagens.
  • Menos adequada para ciência de dados pesada ou trabalho de interface (UI).
  • A simplicidade que favorece a legibilidade pode parecer repetitiva em bases de código grandes.

Quando usar

Recorra a Go quando precisar de um serviço de rápido e autocontido, uma ferramenta de (Command-Line Interface — interface de linha de comando), ou infraestrutura de rede (proxies, APIs (Application Programming Interfaces — interfaces de programação de aplicações), daemons). Ela se destaca onde simplicidade de implantação, desempenho previsível e concorrência importam — motivo pelo qual tanta ferramenta cloud-native (Docker, Kubernetes) é escrita nela.

Encaixe no vibe coding

Assistentes de IA se saem bem com Go justamente porque a linguagem é pequena e os idiomas são fortes — geralmente há uma maneira óbvia de fazer as coisas, então o código gerado tende a ser convencional e limpo segundo o gofmt. Instrua a IA a tratar erros explicitamente em vez de ignorá-los, a usar a biblioteca padrão antes de recorrer a dependências externas, e a aproveitar goroutines com cancelamento adequado via context para concorrência. Peça que ela inclua um caminho de módulo go.mod e uma função main executável, para que você possa rodar com go run imediatamente e verificar cada parte.

package main

import (
	"fmt"
	"strings"
)

func main() {
	words := strings.Fields("go is fast and simple")
	counts := map[string]int{}
	for _, w := range words {
		counts[w]++
	}
	fmt.Println(counts)
}