68 lines
2.4 KiB
Markdown
68 lines
2.4 KiB
Markdown
# Go — Estudo
|
|
|
|
_Fonte: project-based-learning_
|
|
|
|
---
|
|
|
|
## 📚 Recursos Estudados
|
|
|
|
| Tutorial | Tópicos |
|
|
|----------|---------|
|
|
| [Build a CLI Tool](https://blog.alexellis.io/5-keys-to-a-killer-go-cli/) | CLI, flags, cobra |
|
|
| [HTTP Server from Scratch](https://www.youtube.com/playlist?list=PLmxJgSxVWAMhG5YjL1XFPm5E5PAi-BXgZ) | net/http, routing |
|
|
| [WebSocket Chat](https://gowebexamples.com/websockets/) | gorilla/websocket |
|
|
| [Docker/gRPC Tools](https://github.com/miguellgt/grpc-go-course) | gRPC, protocol buffers |
|
|
| [REST API with Gin](https://github.com/gin-gonic/gin) | Gin framework |
|
|
| [Key-Value Store in Go](https://github.com/elliotchance/redismock) | Redis-like in Go |
|
|
|
|
## 🎯 Aplicações para Mundo Telecom
|
|
|
|
1. **CLI de administração** — scripts de infra em Go (mais rápido que Python)
|
|
2. **Proxy/Servidor leve** — substituir scripts pesados
|
|
3. **Ferramentas de deploy** — automação de containers
|
|
4. **Monitoramento** — health checks, heartbeats
|
|
|
|
## 📝 Conceitos Aprendidos
|
|
|
|
### Go Core
|
|
|
|
- **Goroutines**: concorrência leve (não threads OS)
|
|
- **Channels**: comunicação entre goroutines (CSP model)
|
|
- **Interfaces**: duck typing, composição
|
|
- **Structs**: tipos customizados, métodos
|
|
- **Errors**: tratamento explícito (não exceptions)
|
|
- **Packages**: módulos, `go mod`, GOPATH vs modules
|
|
|
|
### CLI com Go
|
|
|
|
- `flag` package ou cobra/viper para CLIs complexas
|
|
- Compilação cross-platform: `GOOS=linux GOARCH=amd64 go build`
|
|
- Binário único: zero dependências runtime
|
|
- Ideal para tools de deploy, health check, backup
|
|
|
|
### Web em Go
|
|
|
|
- **net/http**: servidor HTTP padrão (rápido, estável)
|
|
- **Gin**: framework web mais popular (similar Flask)
|
|
- **Echo**: alternativo, mais leve
|
|
- **gRPC**: comunicação entre microserviços (Protocol Buffers)
|
|
|
|
### Go vs Python para CLI
|
|
|
|
| Aspecto | Go | Python |
|
|
|---------|-----|--------|
|
|
| Binário | Único, estático | Precisa runtime |
|
|
| Performance | ~40x mais rápido | Mais lento |
|
|
| Concorrência | Goroutines nativas | threading/asyncio |
|
|
| Simplicidade | Mais verboso | Mais conciso |
|
|
| Ideal para | Ferramentas de sistema, servidores | Scripts, automação, data science |
|
|
|
|
## ✅ Progresso
|
|
|
|
- [x] Go Core (goroutines, channels, interfaces)
|
|
- [x] CLI Tools em Go
|
|
- [x] HTTP/Servidores com Go
|
|
- [x] gRPC e microserviços
|
|
- [ ] Projeto prático: CLI de monitoramento
|
|
- [ ] Projeto prático: servidor HTTP concorrente
|