- Регистрация
- 1 Мар 2015
- Сообщения
- 1,481
- Баллы
- 155
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
Fatias e Matrizes
Operações comuns: append(), copy(), fatiamento
Mapas
Funções
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
/projeto
go.mod
go.sum
/cmd
/pkg
/internal
? Quiz Rápido
? Próximos Passos
Este guia oferece uma visão geral abrangente da linguagem Go. Para aprofundamento, consulte a .
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
- 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
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+)
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)
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: 0 para int, 0.0 para float
- defer: Execução adiada, útil para limpeza
- range: Índice/valor para fatias, chave/valor para mapas
| 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 |
- 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 .