Files
project-based-learning/study/go-cli.md
T
2026-05-30 23:59:33 +00:00

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