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 comvalue, 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()
📦 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
📚 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)