Go — não é apenas moda, é eficiência
\n\nVocê já se perguntou por que cada vez mais startups e gigantes como Google, Docker e Kubernetes escolhem Go (Golang)? Não é apenas pela velocidade de compilação. Go é uma linguagem que torna o complexo simples. Ela foi criada para sistemas escaláveis, microsserviços e utilitários de linha de comando. E o principal — Go tem uma comunidade incrivelmente amigável e um mar de projetos open source no GitHub.
\n\nNeste artigo, não vamos listar centenas de repositórios. Selecionamos os 10 melhores repositórios Go que realmente serão úteis no seu trabalho. De frameworks web poderosos a ferramentas práticas para desenvolvedores. E sim, mostraremos exemplos de código Go para você entender imediatamente como funciona.
\n\nTop 10 repositórios Go que valem um fork
\n\n1. Gin — o framework web mais rápido
\nRepositório: gin-gonic/gin
Se você procura um framework web em Go que não trava e não é sobrecarregado de magia, Gin é a sua escolha. Ele é muito mais rápido que o padrão net/http e oferece um roteador conveniente com suporte a middleware.
Exemplo de código:
\npackage main\n\nimport "github.com/gin-gonic/gin"\n\nfunc main() {\n r := gin.Default()\n r.GET("/hello", func(c *gin.Context) {\n c.JSON(200, gin.H{\n "message": "Olá, mundo Go!",\n })\n })\n r.Run() // escuta na porta 8080\n}\n\nGin é ideal para APIs REST e microsserviços. Graças à comunidade ativa, você encontrará milhares de exemplos e plugins.
\n\n2. Cobra — crie CLI como um profissional
\nRepositório: spf13/cobra
Qualquer ferramenta Go que se preze deve ter uma CLI conveniente. Cobra é o padrão de facto para criar interfaces de linha de comando. É usado por Docker, Kubernetes, Hugo e muitos outros.
\n\nExemplo de código:
\nvar rootCmd = &cobra.Command{\n Use: "myapp",\n Short: "Minha aplicação incrível",\n Run: func(cmd *cobra.Command, args []string) {\n fmt.Println("Hello from myapp!")\n },\n}\n\nfunc main() {\n rootCmd.Execute()\n}\n\nCobra gera automaticamente help, suporta subcomandos e flags. É indispensável se você escreve utilitários em Go.
\n\n3. Go Kit — conjunto de ferramentas para microsserviços
\nRepositório: go-kit/kit
Quando sua aplicação supera o monolito, o Go Kit vem ao resgate. Não é um framework, mas um conjunto de bibliotecas para construir microsserviços robustos: logging, métricas, circuit breaker, service discovery.
\n\nGo Kit segue princípios de arquitetura limpa. Se você quer escrever código pronto para produção, é um must-have entre as bibliotecas Go.
\n\n4. GORM — ORM para quem não quer escrever SQL manualmente
\nRepositório: go-gorm/gorm
Trabalhar com bancos de dados em Go pode ser conciso. GORM é o ORM mais popular, que transforma o trabalho com PostgreSQL, MySQL, SQLite em um prazer.
\n\nExemplo de código:
\ntype User struct {\n ID uint\n Name string\n Age int\n}\n\nfunc main() {\n db, _ := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})\n db.AutoMigrate(&User{})\n\n db.Create(&User{Name: "Alexei", Age: 30})\n}\n\nGORM suporta migrações, hooks, eager loading e até transações. Excelente escolha para aplicações web em Go.
\n\n5. Viper — gerenciamento de configuração sem dor
\nRepositório: spf13/viper
Configurações de aplicação são uma dor de cabeça eterna. Viper resolve isso de uma vez por todas. Ele lê JSON, YAML, TOML, variáveis de ambiente e até configurações remotas do etcd.
\n\nExemplo de código:
\nviper.Set