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.
Por Que Aprender Go?
Antes de mergulharmos no código, vamos entender por que Go vale seu tempo:
🚀 Vantagens de Go
| Característica | Benefício |
|---|---|
| Sintaxe simples | Curva de aprendizado suave, código legível |
| Compilação rápida | Feedback instantâneo durante desenvolvimento |
| Concorrência nativa | Goroutines tornam programação paralela trivial |
| Binário único | Deploy fácil, sem dependências |
| Garbage Collector | Gerenciamento automático de memória |
| Ecossistema forte | Bibliotecas maduras para web, cloud, DevOps |
💼 Mercado de Trabalho
Go é usado por empresas como Google, Uber, Docker, Kubernetes, Terraform e muitas outras. A demanda por desenvolvedores Go cresce consistentemente, especialmente em:
- Backend e APIs
- Microserviços
- Ferramentas de DevOps
- Cloud computing
- Blockchain
Instalando o Go
Vamos configurar seu ambiente de desenvolvimento. O processo é simples e funciona em todas as plataformas principais.
Verificando a Instalação
Primeiro, verifique se você já tem Go instalado:
go version
Se aparecer algo como go version go1.23.4 linux/amd64, você já está pronto! Caso contrário, continue com a instalação.
Instalação no Linux
Ubuntu/Debian
# Baixa a versão mais recente (substitua pela versão atual)
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
# Remove instalação anterior (se existir)
sudo rm -rf /usr/local/go
# Extrai para /usr/local
sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
# Remove o arquivo baixado
rm go1.23.4.linux-amd64.tar.gz
# Adiciona ao PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# Verifica a instalação
go version
Fedora/RHEL/CentOS
# Usando o repositório oficial
sudo dnf install golang
# Ou manualmente (versão mais recente)
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
Arch Linux
sudo pacman -S go
Instalação no macOS
Usando Homebrew (Recomendado)
brew install go
# Verifica
go version
Instalação Manual
# Baixa o instalador
wget https://go.dev/dl/go1.23.4.darwin-amd64.pkg
# Instala
sudo installer -pkg go1.23.4.darwin-amd64.pkg -target /
# Verifica
go version
Instalação no Windows
Usando WinGet (Windows 10/11)
winget install GoLang.Go
Usando Chocolatey
choco install golang
Instalação Manual
- Baixe o instalador em go.dev/dl
- Execute o arquivo
.msi - Siga o assistente de instalação
- Reinicie o terminal/PowerShell
Configurando o GOPATH (Opcional)
A partir do Go 1.13+, o uso de módulos tornou o GOPATH opcional, mas é bom conhecer:
# Adicione ao seu ~/.bashrc ou ~/.zshrc
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Seu Primeiro Programa em Go
Vamos criar o clássico “Hello, World!” para verificar se tudo está funcionando.
Criando o Arquivo
# Cria um diretório para seu projeto
mkdir ~/projetos-go/hello-world
cd ~/projetos-go/hello-world
# Cria o arquivo main.go
touch main.go
Escrevendo o Código
Abra main.go no seu editor favorito e adicione:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
fmt.Println("Bem-vindo ao Go!")
}
Entendendo o Código
Vamos destrinchar cada parte:
package main
- Todo arquivo Go começa com uma declaração de pacote
package mainindica que este é um programa executável (não uma biblioteca)
import "fmt"
- Importa o pacote
fmt(format), usado para entrada/saída formatada - Similar ao
stdio.hem C ouSystem.outem Java
func main() {
- Declara a função
main, ponto de entrada do programa - Todo programa Go executável precisa de uma função
mainno pacotemain
fmt.Println("Hello, World!")
- Chama a função
Printlndo pacotefmt - Imprime a string seguida de uma nova linha
Executando o Programa
# Executa diretamente
go run main.go
# Output:
# Hello, World!
# Bem-vindo ao Go!
Compilando o Programa
# Compila para um binário executável
go build -o hello-world main.go
# Executa o binário
./hello-world
# Output:
# Hello, World!
# Bem-vindo ao Go!
Estrutura de um Projeto Go
Go tem uma estrutura de projeto específica. Vamos entender os conceitos fundamentais:
Módulos (Modules)
Módulos são a unidade de distribuição de código em Go (introduzido no Go 1.11+):
# Inicializa um novo módulo
go mod init meu-projeto
# Isso cria o arquivo go.mod
cat go.mod
O arquivo go.mod gerado:
module meu-projeto
go 1.23
Workspace (go.work) - Opcional
Para trabalhar com múltiplos módulos:
# Cria um workspace
go work init ./modulo1 ./modulo2
# Cria go.work
Estrutura de Diretórios Recomendada
meu-projeto/
├── go.mod # Definição do módulo
├── go.sum # Checksums de dependências (gerado)
├── main.go # Ponto de entrada
├── cmd/ # Aplicações executáveis
│ └── api/
│ └── main.go
├── pkg/ # Bibliotecas públicas
│ └── utils/
│ └── helpers.go
├── internal/ # Código privado do projeto
│ └── database/
│ └── connection.go
└── api/ # Definições de API
└── types.go
Variáveis de Ambiente Importantes
Configure essas variáveis no seu shell:
# ~/.bashrc, ~/.zshrc ou ~/.bash_profile
# Caminho da instalação do Go (se não estiver no PATH padrão)
export PATH=$PATH:/usr/local/go/bin
# GOPATH - onde ficam dependências e binários
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# Habilita módulos (padrão desde Go 1.16+)
export GO111MODULE=on
# Proxy de módulos (acelera downloads na China, opcional em outros lugares)
# export GOPROXY=https://proxy.golang.org,direct
Após editar, recarregue:
source ~/.bashrc # ou ~/.zshrc
Configurando seu Editor
Visual Studio Code
A melhor experiência para Go no VS Code:
- Instale a extensão “Go” oficial (por Go Team at Google)
- Instale as ferramentas quando solicitado, ou manualmente:
# Instala ferramentas essenciais
go install golang.org/x/tools/gopls@latest
go install github.com/go-delve/delve/cmd/dlv@latest
go install golang.org/x/lint/golint@latest
- Configure o
settings.json:
{
"gopls": {
"ui.semanticTokens": true,
"formatting.gofumpt": true
},
"go.toolsManagement.autoUpdate": true,
"go.lintTool": "golangci-lint",
"go.formatTool": "goimports"
}
GoLand (JetBrains)
IDE dedicada para Go (paga, mas excelente):
- Download: jetbrains.com/go
- Tem todas as ferramentas integradas
- Debugging avançado
- Refatoração inteligente
Vim/Neovim
# Usando vim-go
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# Adicione ao ~/.vimrc
" Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
Comandos Essenciais do Go
Aqui estão os comandos que você usará diariamente:
# Executa um programa
go run main.go
# Compila um programa
go build main.go
# Compila e instala no $GOPATH/bin
go install
# Executa testes
go test ./...
# Formata código automaticamente
go fmt ./...
# Baixa dependências
go mod tidy
# Atualiza dependências
go get -u ./...
# Limpa cache de build
go clean -cache
# Verifica vulnerabilidades
go mod verify
Exercícios Práticos
Teste seus conhecimentos com estes exercícios:
Exercício 1: Personalizar Saudação
Modifique o programa “Hello, World!” para aceitar um nome como argumento e imprimir uma saudação personalizada.
Ver solução
package main
import (
"fmt"
"os"
)
func main() {
nome := "Mundo"
if len(os.Args) > 1 {
nome = os.Args[1]
}
fmt.Printf("Olá, %s! Bem-vindo ao Go!\n", nome)
}
Execute: go run main.go João
Exercício 2: Informações do Sistema
Crie um programa que imprima a versão do Go e o sistema operacional.
Ver solução
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Printf("Versão do Go: %s\n", runtime.Version())
fmt.Printf("Sistema Operacional: %s\n", runtime.GOOS)
fmt.Printf("Arquitetura: %s\n", runtime.GOARCH)
}
Exercício 3: Múltiplos Arquivos
Crie um projeto com dois arquivos: main.go e utils.go, onde utils.go contém uma função que é chamada por main.go.
Ver solução
utils.go:
package main
import "fmt"
func Saudacao(nome string) {
fmt.Printf("Saudações, %s!\n", nome)
}
main.go:
package main
func main() {
Saudacao("Programador Go")
}
Execute: go run main.go utils.go
Troubleshooting Comum
“go: command not found”
Problema: Go não está no PATH.
Solução:
# Verifique onde o Go está instalado
which go
ls /usr/local/go/bin/
# Adicione ao PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
“cannot find main module”
Problema: Tentando executar código fora de um módulo.
Solução:
# Inicialize um módulo
go mod init meu-projeto
# Ou use GOPATH mode (legado)
export GO111MODULE=off
“permission denied” ao executar
Problema: Binário não tem permissão de execução.
Solução:
chmod +x nome-do-binario
Perguntas Frequentes (FAQ)
Qual a diferença entre go run e go build?
go run: Compila e executa imediatamente (útil para desenvolvimento)go build: Compila e gera um binário executável (para produção)
Preciso configurar GOPATH?
Não, desde o Go 1.13+ com módulos, o GOPATH é opcional. Recomendamos usar módulos (go mod).
Como atualizo o Go para uma versão mais nova?
Linux/macOS:
# Remove versão antiga
sudo rm -rf /usr/local/go
# Baixa e instala nova versão
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
Windows: Baixe o novo instalador e execute.
O Go é compilado ou interpretado?
Compilado. Go compila para código máquina nativo, resultando em programas rápidos e binários autônomos.
Quanto tempo leva para aprender Go?
Programadores experientes geralmente ficam produtivos em 1-2 semanas. A sintaxe é minimalista e a curva de aprendizado é suave.
Próximos Passos
Parabéns! Você deu seus primeiros passos em Go. Agora que seu ambiente está configurado e você entende a estrutura básica, continue sua jornada:
Próximo Artigo da Série
📖 Sintaxe Básica de Go: Variáveis, Tipos e Funções — Aprenda os fundamentos da linguagem: como declarar variáveis, trabalhar com diferentes tipos de dados e criar funções.
Recursos Adicionais
- 📚 Documentação oficial — A melhor referência
- 🎓 A Tour of Go — Tutorial interativo
- 🎥 Go by Example — Exemplos práticos
- 💬 Comunidade Golang Brasil — Tire dúvidas e conecte-se
Projetos para Praticar
- Calculadora CLI — Aceite operações via linha de comando
- Conversor de temperatura — Celsius, Fahrenheit, Kelvin
- Gerador de senhas — Senhas aleatórias seguras
- Lista de tarefas — CRUD simples em memória
Gostou deste tutorial? Compartilhe com outros desenvolvedores! Encontrou algum erro ou tem sugestões? Entre em contato.
Próximo artigo: Sintaxe Básica de Go: Variáveis, Tipos e Funções →
Última atualização: 09 de fevereiro de 2026
Versão do Go: 1.23