想系统学习GO语言(Golang),能推荐几本靠谱的书吗?

go学习笔记第3版 Go并发编程实战 https://github.com/wonderfo/wonderfogo/wiki https://gith…
关注者
4,728
被浏览
6,333,225

165 个回答

学习任何一门语言,都要学习好基础,把基础打牢,那些框架对你来说都是工具,你自己的基础好,懂得了他们的原理,自己就可以创造更优秀的框架。

基础推荐官方文档,没有什么比这个更清晰了。官方文档可以看这个中文的,比较快一些 go-zh.org/doc/

其次参考这个Go指南,练习一遍 tour.go-zh.org/welcome/

现在对Go语言应该有了一个全面的认识,然后你再结合Go语言圣经这本书,深入理解Go的基础。

Go语言圣经中文版 github.com/gopl-zh/gopl

然后通过《Go语言实战》这本书,In Action系列都是比较经典的,看这本书的实习可以参考我《Go语言实战》这本书的读书笔记,一共近30篇文章,15万字,非常全面,书里没有的我这里也讲到了很多。这里列其中几篇:

  1. Go语言环境搭建详解(2020版) - 飞雪无情的博客
  2. Go语言实战笔记(一)| Go包管理
  3. Go语言实战笔记(五)| Go 切片
  4. Go语言实战笔记(九)| Go 接口
  5. Go语言实战笔记(十三)| Go 并发资源竞争
  6. Go语言实战笔记(二十)| Go Context
  7. Go语言实战笔记(二十四)| Go 反射
  8. Go语言实战笔记(二十六)| Go unsafe 包之内存布局

最终再通过一些别的第三方库源代码和实践,就可以完全掌握了。我最近也在分析一些经典库,可以保持关注:

  1. Go语言经典库使用分析(一)| 开篇
  2. Go语言经典库使用分析(二)| Gorilla Context
  3. Go语言经典库使用分析(三)| Gorilla Handlers 详细介绍
  4. Go语言经典库使用分析(四)| Gorilla Handlers 源代码实现分析
  5. Go语言经典库使用分析(五)| Negroni 中间件(一) - 飞雪无情的博客
  6. Go语言经典库使用分析(六)| Negroni 中间件(二)
  7. Go语言中间件框架 Negroni 的静态文件处理源码分析 - 飞雪无情的博客
  8. Go语言经典库使用分析(七)| 高性能可扩展 HTTP 路由 httprouter - 飞雪无情的博客
  9. Go语言经典库使用分析(八)| 变量数据结构调试利器 go-spew - 飞雪无情的博客
  10. Golang Gin 实战(一)| 快速安装入门
  11. Golang Gin 实战(二)| 简便的Restful API 实现
  12. Golang Gin 实战(三)| 路由参数
  13. Golang Gin 实战(四)| URL查询参数的获取和原理分析
  14. Golang Gin 实战(五)| 接收数组和 Map
  15. Golang Gin 实战(六)| 获取Form表单参数和原理分析
  16. Golang Gin 实战(七)| 分组路由源代码分析 - 飞雪无情的博客
  17. Golang Gin 实战(八)| JSON渲染输出 - 飞雪无情的博客
  18. Golang Gin 实战(九)| JSONP跨域和劫持 - 飞雪无情的博客
  19. Golang Gin 实战(十)| XML渲染 - 飞雪无情的博客
  20. Golang Gin 实战(十一)| HTML模板渲染 - 飞雪无情的博客
  21. Golang Gin 实战(十二)| ProtoBuf 使用和源码分析原理实现 - 飞雪无情的博客
  22. Golang Gin 实战(十三)| 中间件详解看这一篇就够了 - 飞雪无情的博客
  23. Golang Gin 实战(十四)| 文件托管、反向代理百度网站、自实现API网关 - 飞雪无情的博客

基础进阶

  1. 一个简单的Golang实现的HTTP Proxy
  2. 一个简单的Golang实现的Socket5 Proxy
  3. GitHub上优秀的Go开源项目
  4. 从Java到Golang快速入门
  5. Golang必备技巧:接口型函数
  6. Go语言爬虫抓取拉勾职位--提升找工作成功概率
  7. Go语言 | Go 1.9 新特性 Type Alias详解
  8. Go语言生成二维码是如此简单
  9. Go语言中new和make的区别
  10. Go语言中自动选择json解析库
  11. golang goquery selector(选择器) 示例大全
  12. Go语言中使用正则提取匹配的字符串
  13. Go语言参数传递是传值还是传引用
  14. Go语言性能优化-两数之和算法性能研究 - 飞雪无情的博客
  15. Go语言性能优化- For Range 性能研究 - 飞雪无情的博客
  16. Go语言字符串高效拼接(一) - 飞雪无情的博客
  17. Go语言字符串高效拼接(二) - 飞雪无情的博客
  18. Go语言字符串高效拼接(三) - 飞雪无情的博客
  19. 【译】Go 语言实践:编写可维护的程序的建议 - 飞雪无情的博客
  20. Go语言slice的本质-SliceHeader - 飞雪无情的博客
  21. Go语言(golang)的错误(error)处理的推荐方案 - 飞雪无情的博客
  22. Go语言(golang)新发布的1.13中的Error Wrapping深度分析 - 飞雪无情的博客
  23. 一步步提升Go语言生成随机字符串的效率
  24. Go语言 | 从并发模式看channel使用技巧 - 飞雪无情的博客
  25. Go语言|基于channel实现的并发安全的字节池 - 飞雪无情的博客

最后,希望这个可以帮助你,推荐这两本不错的Go语言书籍:

基础:the go programming language和go in action。

原理学习:雨痕的go学习笔记。

web编程:直接看astaxie在github上的go web编程。

还有一本内容有些旧的,但个人觉得值得一看的书就是the way to go。大而全。github上有部分章节的中译版。

另外,建议看一遍官方的language specificaition,effective go和go faq,对学go,理解go设计的来龙去脉大有裨益。

近期将系统学习go的书籍推荐整理成了一篇文章:《Tony Bai:系统学习Go语言,有这几本书就够了!》,欢迎阅读反馈!