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.

Ler mais →

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:

Ler mais →

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:

Ler mais →

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.

Ler mais →

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ísticaREST/HTTP JSONgRPC
FormatoJSON (texto)Protocol Buffers (binário)
Performance~15x mais lento~15x mais rápido
PayloadVerbos, repetitivoCompacto, eficiente
TipagemFraca (runtime)Forte (compile-time)
StreamingComplicado (SSE/WebSocket)Nativo e simples
Code GenerationManualAutomático
Browser SupportNativoRequer gRPC-Web

Quando escolher gRPC:

Ler mais →

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:

Ler mais →

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.

Ler mais →

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.

Ler mais →

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.

Ler mais →