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ísticaBenefício
Sintaxe simplesCurva de aprendizado suave, código legível
Compilação rápidaFeedback instantâneo durante desenvolvimento
Concorrência nativaGoroutines tornam programação paralela trivial
Binário únicoDeploy fácil, sem dependências
Garbage CollectorGerenciamento automático de memória
Ecossistema forteBibliotecas 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

  1. Baixe o instalador em go.dev/dl
  2. Execute o arquivo .msi
  3. Siga o assistente de instalação
  4. 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 main indica 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.h em C ou System.out em Java
func main() {
  • Declara a função main, ponto de entrada do programa
  • Todo programa Go executável precisa de uma função main no pacote main
    fmt.Println("Hello, World!")
  • Chama a função Println do pacote fmt
  • 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:

  1. Instale a extensão “Go” oficial (por Go Team at Google)
  2. 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
  1. 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

Projetos para Praticar

  1. Calculadora CLI — Aceite operações via linha de comando
  2. Conversor de temperatura — Celsius, Fahrenheit, Kelvin
  3. Gerador de senhas — Senhas aleatórias seguras
  4. 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