DEV Community

Cover image for Guia de Estudo Go 1
Eduardo Betim Rosa
Eduardo Betim Rosa

Posted on

Guia de Estudo Go 1

Guia de Estudo: Linguagem de Programação Go

Este guia abrange os principais conceitos da linguagem Go (Golang), desde fundamentos até tópicos avançados como concorrência e gerenciamento de pacotes.

📌 Conceitos Fundamentais

Variáveis e Tipos de Dados

  • Declaração: Use var com tipo explícito ou := para inferência
  • Escopo: Variáveis podem ser globais ou locais
  • Valor Zero: Valores padrão para tipos não inicializados
  • Tipos Numéricos: int, float, uint com vários tamanhos
  • Conversão: Requer conversão explícita entre tipos

Estruturas de Controle

  • Condicionais: if, if-else com possível instrução curta
  • Switch: Simplifica múltiplas condições
  • Loops: Único tipo for com várias variações
  • Controle de Loop: break, continue, range

🧩 Estruturas de Dados

Fatias e Matrizes

Característica Matriz Fatia
Tamanho Fixo Dinâmico
Redimensionamento Não Sim
Subjacente - Matriz

Operações comuns: append(), copy(), fatiamento

Mapas

  • Coleções chave-valor não ordenadas
  • Acesso com map[key], verificação com value, ok := map[key]
  • Pacote maps para utilitários (Go 1.21+)

🛠️ Funcionalidades Avançadas

Funções

  • Variádicas: Aceitam número variável de argumentos (...)
  • Anônimas: Funções sem nome atribuíveis a variáveis
  • defer: Execução adiada até o retorno da função
  • Métodos: Associados a tipos (structs)

Concorrência

go minhaFuncao()  // Goroutine
ch := make(chan int)  // Canal

// Exemplo com WaitGroup
var wg sync.WaitGroup
wg.Add(1)
go func() {
    defer wg.Done()
    // trabalho concorrente
}()
wg.Wait()
Enter fullscreen mode Exit fullscreen mode

📦 Gerenciamento de Pacotes

Módulos Go

  1. go mod init [caminho]
  2. go mod tidy (gerencia dependências)
  3. Estrutura típica:
   /projeto
     go.mod
     go.sum
     /cmd
     /pkg
     /internal
Enter fullscreen mode Exit fullscreen mode

🔍 Quiz Rápido

  1. Matriz vs Fatia: Matriz tem tamanho fixo, fatia é dinâmica
  2. Declaração curta: x := 42
  3. Valor zero: 0 para int, 0.0 para float
  4. defer: Execução adiada, útil para limpeza
  5. range: Índice/valor para fatias, chave/valor para mapas

📚 Glossário

Termo Definição
Goroutine Função leve concorrente
Channel Mecanismo de comunicação entre goroutines
Mutex Sincronização para acesso seguro
Zero Value Valor padrão de tipos não inicializados
pprof Ferramenta de análise de desempenho

🚀 Próximos Passos

  • Explore pacotes padrão como net/http para web
  • Pratique concorrência com canais e WaitGroups
  • Experimente criação de pacotes customizados

Este guia oferece uma visão geral abrangente da linguagem Go. Para aprofundamento, consulte a documentação oficial.

Top comments (0)