Primeiros Passos com Go
Tutorial de 5 minutos para começar com Go: download, instalação, GOPATH, primeiro programa Hello World e seu primeiro servidor HTTP. Guia para iniciantes completos.
Primeiros Passos com Go
Go (também chamado de Golang) é uma linguagem de programação criada pelo Google em 2009. É conhecida por sua simplicidade, performance e excelente suporte para programação concorrente.
Por Que Aprender Go?
- Simples de aprender — sintaxe clara e mínima
- Rápido — compila para código nativo
- Concorrência nativa — goroutines e channels
- Ótimo tooling — formatter, linter, test runner incluídos
- Mercado aquecido — salários competitivos no Brasil
1. Instalando Go
Linux (Ubuntu/Debian)
# Baixar Go (substitua pela versão mais recente)
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
# Extrair para /usr/local
sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
# Adicionar ao PATH (adicione ao ~/.bashrc ou ~/.zshrc)
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
macOS
# Com Homebrew
brew install go
# Ou baixe de https://go.dev/dl/
Windows
Baixe o instalador MSI em go.dev/dl e execute.
Go Modules: Gerenciando Dependências em Go
Domine Go Modules: go mod init, go mod tidy, go.sum vs go.mod, versioning semântico e replace. Tudo que você precisa pra gerenciar dependências em Go.
Go Modules: Gerenciando Dependências
Desde Go 1.11, Go Modules é o sistema oficial para gerenciamento de dependências em Go. Antes disso, usávamos GOPATH e ferramentas como dep e glide, mas hoje Go Modules é a forma padrão e recomendada.
O Básico
Criando um Módulo
# Crie um diretório para seu projeto
mkdir meu-projeto
cd meu-projeto
# Inicialize o módulo
go mod init github.com/seuuser/meu-projeto
Isso cria um arquivo go.mod:
module github.com/seuuser/meu-projeto
go 1.23
Adicionando Dependências
# Adicionar uma dependência específica
go get github.com/gin-gonic/gin@v1.9.1
# Adicionar a versão mais recente
go get github.com/gin-gonic/gin@latest
# Adicionar dependências do código (ao importar)
go mod tidy
O go.mod é atualizado automaticamente:
Concorrência em Go: Goroutines e Channels
Aprenda concorrência em Go: goroutines (100k simultâneas), channels, select, WaitGroup e padrões fan-in/fan-out. Com exemplos que rodam no playground.
Concorrência em Go
Uma das maiores forças do Go é seu modelo de concorrência, baseado em goroutines e channels. Diferente de threads tradicionais, goroutines são leves e gerenciadas pelo runtime do Go.
Goroutines
Uma goroutine é uma função executando concorrentemente com outras goroutines. Para criar uma goroutine, use a palavra-chave go:
package main
import (
"fmt"
"time"
)
func dizer(msg string) {
for i := 0; i < 3; i++ {
fmt.Println(msg)
time.Sleep(100 * time.Millisecond)
}
}
func main() {
go dizer("goroutine") // executa concorrentemente
dizer("main") // executa na goroutine principal
}
Características das Goroutines
- Leves: ~2KB de stack (vs ~1MB para threads OS)
- Multiplexadas: milhares podem rodar em poucos threads OS
- Gerenciadas pelo runtime: scheduling automático
// Criar 1000 goroutines é trivial
for i := 0; i < 1000; i++ {
go func(n int) {
fmt.Println(n)
}(i)
}
Channels
Channels são a forma idiomática de comunicação entre goroutines. Seguem o princípio:
Generics em Go: Guia Prático com Exemplos Reais
Aprenda Generics em Go com exemplos práticos: type parameters, constraints, funções e structs genéricas, repository pattern e quando não usar generics.
Generics foram introduzidos no Go 1.18 e representam uma das maiores mudanças na linguagem desde sua criação. Com eles, você pode escrever funções e tipos reutilizáveis sem sacrificar a segurança de tipos que Go oferece. Neste guia, vamos explorar generics na prática com exemplos que você pode usar no dia a dia.
O que São Generics?
Antes de generics, quando precisávamos de uma função que operasse sobre diferentes tipos, tínhamos duas opções ruins: duplicar código para cada tipo ou usar interface{} (agora any) e perder a segurança de tipos em tempo de compilação.
Go e gRPC: Comunicação entre Serviços Completo
Aprenda a criar APIs eficientes com gRPC em Go. Tutorial completo cobrindo Protocol Buffers, streaming, interceptores e testes.
Go e gRPC: Comunicação entre Serviços
O gRPC tornou-se o padrão de facto para comunicação entre microserviços em ambientes de alta performance. Desenvolvido pelo Google, ele oferece vantagens significativas sobre REST tradicional, especialmente quando combinado com a eficiência do Go.
Neste tutorial completo, você vai aprender a construir serviços gRPC robustos em Go, desde o básico até técnicas avançadas como streaming bidirecional e interceptores.
Por Que Usar gRPC em Go?
gRPC vs REST: Comparativo
| Característica | REST/HTTP JSON | gRPC |
|---|---|---|
| Formato | JSON (texto) | Protocol Buffers (binário) |
| Performance | ~15x mais lento | ~15x mais rápido |
| Payload | Verbos, repetitivo | Compacto, eficiente |
| Tipagem | Fraca (runtime) | Forte (compile-time) |
| Streaming | Complicado (SSE/WebSocket) | Nativo e simples |
| Code Generation | Manual | Automático |
| Browser Support | Nativo | Requer gRPC-Web |
Quando escolher gRPC:
Criando sua Primeira API REST em Go: Tutorial Completo Passo a Passo
Construa uma API REST completa em Go. Tutorial prático com HTTP handlers, JSON, routing, middleware e banco de dados. Do zero à produção.
Neste quinto e último artigo da série “Golang para Iniciantes”, vamos aplicar tudo o que aprendemos para construir uma API REST completa do zero. Você criará um servidor web funcional com rotas, handlers, JSON, persistência em memória e testes.
Se você está chegando agora, recomendamos revisar os artigos anteriores:
📖 ← Série Completa: Golang para Iniciantes
O Que Vamos Construir
Vamos criar uma API de Gerenciamento de Tarefas (Todo API) com as seguintes funcionalidades:
Golang para Iniciantes: Primeiros Passos - Guia Completo 2026
Aprenda Go do zero. Tutorial completo de instalação, configuração do ambiente e primeiro programa. Guia passo a passo para iniciantes em Golang.
Go (ou Golang) é uma das linguagens de programação mais populares para desenvolvimento backend, microserviços e ferramentas de infraestrutura. Criada pelo Google em 2009, ela combina simplicidade, performance e produtividade de uma forma única.
Se você está começando sua jornada em Go, este é o lugar certo. Neste primeiro artigo da série “Golang para Iniciantes”, vamos cobrir tudo o que você precisa para dar os primeiros passos: desde a instalação até escrever seu primeiro programa funcional.
Sintaxe Básica de Go: Variáveis, Tipos e Funções - Tutorial Completo
Aprenda a sintaxe de Go na prática: variáveis com :=, 15 tipos de dados, funções com múltiplos retornos, structs e métodos. Exemplos que você pode copiar e rodar.
Neste segundo artigo da série “Golang para Iniciantes”, vamos mergulhar nos fundamentos da linguagem. Você aprenderá tudo sobre variáveis, tipos de dados, funções, structs e métodos — os blocos de construção essenciais de qualquer programa Go.
Se você ainda não leu o primeiro artigo, recomendamos começar por lá:
📖 ← Artigo Anterior: Golang para Iniciantes: Primeiros Passos
Variáveis em Go
Go oferece várias formas de declarar variáveis, desde a forma explícita até a inferência de tipos.
Go Modules na Prática: Guia Completo
Tutorial prático de Go Modules: go mod init, go mod tidy, go.sum, replace, workspace e mono-repos. Exemplos reais para gerenciar dependências em Go.
Go Modules é o sistema oficial de gerenciamento de dependências do Go desde a versão 1.11. Neste guia prático, você vai aprender tudo que precisa para dominar Go Modules no dia a dia.
O Que São Go Modules?
Go Modules é um sistema que:
- Gerencia dependências do seu projeto
- Controla versões de pacotes
- Garante builds reproduzíveis
- Elimina a necessidade do GOPATH
Cada projeto Go moderno é um “módulo” — uma coleção de pacotes Go versionados juntos.