Golang Go语言中有什么代码质量高的开源项目值得学习和推荐吗?

发布于 1周前 作者 yuanlaile 来自 Go语言
命令行程序,网络框架,中间件或者是大型项目都可以,目的是为了掌握良好的编程范式和其背后的技术实现细节,谢谢诸位!

Golang Go语言中有什么代码质量高的开源项目值得学习和推荐吗?
22 回复

k8s

更多关于Golang Go语言中有什么代码质量高的开源项目值得学习和推荐吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


推荐 grafana 家的 tempo 和 loki
里面有共识算法,有 wal ,有数据处理,有 parquet ,还有一些很不错的设计模式

基于泛型&代码生成&拦截器的依赖注入框架 :-)
https://github.com/go-kod/kod

nsq ,很有意思的一个消息队列

tailscale ,gvisor ,go 标准库。。。感觉都挺好。

项目有点大,不太适合小白学习 本地部署调试

rclone 纯新手看的话有点难度

gin 和 gorm 就挺好的呀。

我学 go 的时候就是看的这个练手,代码味还是挺正的

filebrowser ?

选你感兴趣的、有一定人气的项目就行,参与社区,只有交流才能使你提高,除了技术还有 reputation 。

have fun : )

可以看看我 star 的仓库,语言选 Go ,都是非常经典的开源项目
https://github.com/gowk?tab=stars

https://github.com/lonng/nano web 服务的模板
https://github.com/LazyFury/yoomall 这个是我照猫画虎搭的,我感觉更清晰一点,但也简单很多

看 go runtime 和 go 标准库的源码能够快速提升 Go 语言的基础理解,而且能学习一套可能是 Go 团队比较中意的实践代码风格(其实很像 C )。

《 Go 语言设计与实现》 - https://draveness.me/golang/
golang-note - https://github.com/cch123/golang-notes/tree/master

这是 Go 语言设计实现源码分析的系列文章可以看下,注意下文章里对应的 Go 版本可能比较老了。不过关于 Go 的 GC 这两个项目没有讲得很全面,要看的话估计还得再找找。

Go 语言是自举的,所以通过学习 Go 语言本身的源码确实提升很快。

K8S 的源码我个人感觉其实风格不是很 Go ,即便用 Java 重新写一套感觉也没啥违和感。我自己最近在看 VictoriaMetrics , 作者应该算是 Go 性能大师了,可以学到很多内存管理、并发控制、IO 优化的内容,里面也包括一些他自己写的轮子:fastcache 、uint64set 等等,都是挺值得琢磨的,欢迎讨论。

看完 VM 以及作者的其他项目(如 fasthttp )我可能会去看 NATS ,因为作为 Go 实现的消息队列它已经实现了很多对标 Kafka 的功能,所以也看看设计,以及思考性能上有没有优化空间。

gorm 恐怕真的算了吧。

在Golang(Go语言)生态中,有许多高质量的开源项目值得学习和推荐。以下是一些值得关注的项目:

  1. Kubernetes:这是一个容器编排平台,用于自动化应用程序的部署、扩展和管理。Kubernetes项目对Golang的依赖非常重,是学习云原生和容器化技术的绝佳示例。
  2. Docker:作为开源的应用容器引擎,Docker让开发者可以打包应用及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。Docker的实现也大量使用了Golang。
  3. Prometheus:这是一个开源的系统监控和警报工具包,使用Golang编写,具有灵活的数据模型、强大的查询语言,并且不依赖分布式存储。
  4. Gin:这是一个高性能的HTTP Web框架,用于快速开发API。Gin提供了丰富的中间件支持和易于路由定义的功能,非常适合构建轻量级、高性能的Web应用。
  5. Hugo:这是一个用Go编写的静态网站生成器,速度极快且易于使用。它允许用户通过简单的模板和Markdown文件来创建网站,非常适合个人博客或企业网站。
  6. GORM:这是一个强大的ORM库,用于Go语言,支持多种数据库如MySQL、PostgreSQL等。GORM的设计哲学是简洁和易用,通过简单的API即可实现复杂的数据库操作。

这些项目不仅代码质量高,而且社区活跃、文档完善,是学习Golang和了解现代软件开发实践的绝佳资源。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!