Go Expert O Curso Go Expert tem o objetivo de te tornar uma pessoa desenvolvedora Go que é capaz de trabalhar em grandes empresas recebendo os melhores salários.
Além dos principais fundamentos da linguagem, o curso também apresentará as principais necessidades técnicas que as empresas possuem e como resolvê-las com a Golang.
Desenvolvimento de APIs, Testes automatizados, Multithreading, Comunicação entre microsserviços, Clean Architecture, Processos de deploy utilizando Docker e Kubernetes fazem parte da ementa.
Introdução a linguagem
- Sobre a linguagem e seu histórico * Motivações
- Sobre a linguagem e seu histórico
- Instalação
- Configuração do ambiente no VSCode
Implementações
- gRPC
- GraphQL
- Upload de arquivos na AWS S3
- Command line com cobra CLI
- Unit of Work
- Dependency injection com Google Wire
- Manipulação de eventos (Event Dispatcher, Handlers, etc)
- Integração com RabbitMQ
- Gerenciamento de configuração com Viper
Desenvolvimento de APIs
- Retomando conceitos de HTTP Server e Mux
- Criando Endpoints
- Apresentando principais frameworks e roteadores
- Trabalhando com “chi”
- Middlewares
- Autenticação e tokens JWT
- Documentando API com Swagger
Go e Clean Architecture
- Iniciando com Clean Architecture
- Pontos importantes sobre arquitetura
- Keep options opened
- Use Cases
- Limites arquiteturais
- Input vs Output
- DTOs
- Entities
- Desenvolvendo camada de domínio
- Criando Use Cases
- Criando adaptador para banco de dados
- Criando adaptador para o RabbitMQ
- Servindo endpoints HTTP
- Consumindo mensagens com RabbitMQ
- Criando CLI para iniciar a aplicação
- Go Doc
Foundation
- Primeiros passos
- Trabalhando com tipagem forte
- Arrays, Slices, Maps
- Laços de repetição, condicionais
- Ponteiros
- Funções, Structs, Métodos, Interfaces e Generics
- Trabalhando com packages
- Módulos
- Módulos privados
- Instação de pacotes
- Compilando projetos Go
- Workspaces
Concorrência e Multithreading
- Entendendo conceitos de concorrência e paralelismo
- Como Go aborda concorrência e schedulers
- Iniciando com Go Routines
- Contadores atômicos
- Trabalhando com Channels e buffers
- Utilizando recurso de Select
- Wait Groups
- Mutex
- Previnindo race conditions
- Desenvolvimento de workers utilizando channels
- Load Balancer
Pacote Context
- Entendendo o conceito de um context
- Armazenando e recuperando valores
- Background, Timeout, Deadline e Cancelations
- Context na prática
Testes automatizados
- Iniciando com testes no Go
- Formas de asserção
- Pacotes úteis
- Trabalhando com Mocks
- Fuzzes e testes de mutação
- Testes em batch
- benchmarking
- Criando suite de testes com Testify
- Testes End-to-end
Pacotes importantes
- Manipulação de arquivos
- Chamada HTTP
- Trabalhando com objetos Json
- Defer
- Desenvolvendo um sistema Busca CEP
- Trabalhando com HTTP
- Criando servidores HTTP
- Entendendo Multiplexers
- Servidor de arquivos
- Trabalhando com templates dinâmicos
- Aprofundando em HTTP utilizando Context
Banco de dados
- Entendendo como Go trabalha com banco de dados
- Estabelecendo conexão e realizando primeiras operações
- Boas práticas de segurança
- Realizando operações utilizando Context
- Go puro vs ORM
- Trabalhando com GORM
- Migrations
- SQLC: Geração automática de Queries