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
varcom 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,uintcom vários tamanhos - Conversão: Requer conversão explícita entre tipos
Estruturas de Controle
-
Condicionais:
if,if-elsecom possível instrução curta - Switch: Simplifica múltiplas condições
-
Loops: Único tipo
forcom 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 comvalue, ok := map[key] - Pacote
mapspara 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()
📦 Gerenciamento de Pacotes
Módulos Go
go mod init [caminho]-
go mod tidy(gerencia dependências) - Estrutura típica:
/projeto
go.mod
go.sum
/cmd
/pkg
/internal
🔍 Quiz Rápido
- Matriz vs Fatia: Matriz tem tamanho fixo, fatia é dinâmica
-
Declaração curta:
x := 42 -
Valor zero:
0para int,0.0para float - defer: Execução adiada, útil para limpeza
- 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/httppara 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)