Go学习资源汇总

324 阅读4分钟

因为一直想学习一门后端语言,然后对比了一下Java和Go, 最后选择了Go。首先是它的语法简洁,比较好入门;然后是天然支持高并发,性能好;最后是比较有前景。虽然相对于Java来说,它的生态没有那么完善,但是随着现在云原生的发展,很多公司的服务端语言已经从原来的PHP、Java、C++等转为了Go,所以说Go语言的发展趋势还是比较不错的。

下面零零散散收集的一些Go语言学习资料。

github上的资料

  1. Go 开发者路线 里面的内容可以给Go初学者一个学习的总体大纲

go路线.png

  1. Go Web应用开发 里面记录了Go的环境搭建、Go语言基础、Web基础、维护和部署等内容,个人觉得对于入门来说是一个非常不错的资料。

  2. awesome-go 在github上搜索awesom-go,可以查找到很多Go相关的学习资源

1657035182(1).png

下面就列举前几个star比较高的仓库

  • 国外版的awesome-go 里面收集了自动化构建、命令行工、数据库、多媒体、区块链等各种工具库
  • awesome-go-cn该仓库可以看作是国外版的awesome-go的一个中文版本
  • go-awesome 该仓库收集了一些Go书籍、文档、指南、文章、类库、开源项目、大牛博客等资源,是本人逛的时间最多的一个仓库。

1657034779(1).png

经常使用的第三方库

如果想查看第三方包的用法,可以通过github或者pkg.go.dev/ 查看

  1. gin:gin是一款用Go编写的高性能的Web框架,具有分组路由、良好的崩溃捕获和错误处理、并且支持中间件和json, 是Go中目前最流行的Web框架。
  2. gorm: gorm是一款对开发者比较友好的ORM框架,具有全功能的ORM,支持预加载、事务、批量迁移、自动迁移、自定义Logger等特点,也是目前Go最流行的ORM框架。
  3. logrus: logrus是一款结构化的Go日志库,与标准库Log完全兼容,是目前start数最多的go日志库。
  4. zap: zap是一款高性能的日志库,具有结构化、分层次、灵活自定义的特点。
  5. pflag: pflag是一款比较常用的命令行参数解析的库。它相对于标准库flag来说,支持更多、更细的参数类型和支持shortland、deprecated、hidden等高级功能。
  6. viper: viper是一款配置解析的库,可以支持JSON、TOML、YAML、HCL、envfile、Java properties等配置文件读取,并且具有监听配置文件更改的功能。
  7. cobra: cobra是一个强大的现代CLI工具, 在实际应用中可以结合viper及pflag一起使用。
  8. casbin: casbin是一个强大且高效的权限控制库,它支持ACL、RBAC、ABAC等多种权限访问控制模式。
  9. wire: wire是一款google开发的代码依赖注入工具
  10. sonyflake: sonyflake是一款基于twitter的snowflake算法,可以生成随机的uuid
  11. go-redis: go-redis是一款支持发布/订阅、事务、哨兵模式、集群模式、分布式锁等功能,相对于其它Go的redis库中,也是star数最多的。
  12. websocket gorilla websocket是WebSocket协议的Go实现版本,目前Go中使用最多的websocket库
  13. amqp amqp是RabbitMQ的go实现版本,该项目已经在生产中被使用很多年了,主分支上很久没有更新代码了,不过官方建议使用fork的分支rabbitmq/amqp091-go
  14. gin-swagger gin-swagger 是一个用Swagger2.0自动生成RESTful API文档的gin中间件, 需要配合swag一起使用

上面只是本人接触到的github上star比较多的库, 还有很多其它非常优秀的第三方库,这里就略过。

其它

  1. go语言中文网 go语言中文网虽然界面上比较丑了一点,但是算是Go社区当中比较活跃的网站,在里面可以找到很多优秀的文章及开源项目。
  2. lernku.com lernku技术社区也有很多Go的教程及文档,比如高效的Go编程Effective Go、Go入门指南、Go Web编程等等
  3. Golang标准库文档 其它还有很多牛人的博客,比如鸟窝dravenTony Bai