如何学习go语言?

Go语言这几年发展的确实不错,虽然没有实现赶超C++的目标,但是已经很接近了 。而这些年也出现了一些Go语言的有名的项目,比如 kubernetes、Docker、Etcd、Tidb等项目 。
我这里整理了一份关于Go语言的学习路线,也可以辅助你做判断 。
Go语言是一门全新的静态类型开发语言 , 具有自动垃圾回收、丰富的内置类型、函数多返回值、错误处理、匿名函数、并发编程、反射、defer等关键特征 。从语言层面来说天然支持并发,可以充分利用CPU多核,并且非常适合用来进行服务器编程、网络编程和分布式编程等 。
在云计算领域 , 用Go语言编写的云基础项目如Docker、Kubernetes都取得了巨大的成功,别外还有知名的项目如Etcd、consul、flannel等,也都是使用Go语言实现的 。
为你提供几张学习Go语言的线路图,从基础到进阶、Web编程、微服务的学习,你可以参考一下 。
基础学习
书籍推荐
【如何学习go语言?】《Head First Go语言程序设计》、《Go语言学习笔记》、《Go语言趣学指南》、《Go语言编程》
当然,不必所有的书都读,找其中一本学习即可 。
在线学习Go语言资料
Go By Example 中文版 : ,使用代码示例来学习 Go 语言 。Go 面试题 :,也是使用代码示例来讲解 Go , 用来准备面试也是很好的 。无闻大佬的在线入门指南 : 跟着单元测试学习 Go :,有中文版 。
初级练手项目
starcharts :,项目的功能是生成 Github 上面的项目的 star 趋势图,核心代码不多 , 用来练手很合适 。gorched :,使用 Go 写的一个小游戏 。pacgo : ,也是使用 Go 写的一个小游戏网页开发语言有哪些,每一步都有详细的描述和代码实现 。wechat-go :  , 微信 web 版 API 的 Go 实现,模拟微信网页版的登录/联系人/消息收发等功能 。
Go语言进阶
书籍推荐
《Go程序设计语言》、《Go专家编程》、《Go语言高级编程》、《Go并发编程》
在线学习Go语言资料
1.《Go 语言设计与实现》:。
2.《Go 语言高级编程》:。
进阶练手项目
rosedb :,一个用 Go 实现的简易高效的 k-v 存储引擎 。gochat :  , 一个 Go 语言实现的轻量级 im 系统,对网络方面熟悉或者感兴趣的可以看看 。7DaysGolang : ,7 天使用 Go 从零实现 web 框架、分布式缓存、ORM 框架,、RPC 框架,代码量不多 , 但是质量挺不错的
Go Web编程

如何学习go语言?

文章插图
书籍推荐
《Go Web编程》
在线学习资料
可以学习下 web 框架 Gin、beego:两个框架都比较的流行,选择其中一个其实就可以了,推荐 Gin 。官方文档都有中文,照着 demo 敲一下,了解下怎么处理 HTTP 请求的 。
其次还需要掌握一下比较流行的 ORM 框架 Gorm,有官方中文文档,照着 demo 敲一下基本上两天就能掌握了 , 后面遇到不会的再来查 。
Web框架相关的,基本上看官方文档就可以了 , 就不用再去找专门介绍的书籍,没有比官方文章更正宗的资料了 。
除框架之外,你还需要学会的是包括但不限于:
Go Web项目推荐
gin-vue-admin :  , 使用 Gin 框架构建的后台管理系统 。ferry :,基于 Gin + Vue + Element UI 前后端分离的工单系统 。go-admin : ,Gin + Vue + Element UI 的前后端分离权限管理系统 。
Go 微服务
目前 Go 在微服务中的应用也比较广泛,但说实话 , 微服务是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚网页开发语言有哪些,而且也没条件,或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会 。
推荐一本微服务概述的基础书籍《微服务设计》、《微服务架构设计模式》 , 可以帮助你理解微服务的建模、集成、测试、部署和监控的一些基础知识 。
其次,你可以看一下《Go微服务实战》这本书,看后半部分即可,里面其实介绍的还是关于微服务方面的知识 。
推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等 。其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档 。
在线学习的资料:
手把手实现一个简单的 Go 微服务项目,你可以通过这个项目来学习微服务的相关知识,并且有中文版 。
Go语言原理研究
如果你对Go语言底层原理感兴趣的话,可以看下这本书《Go语言底层原理剖析》 。
开源项目学习
在项目开发过程中 , 也会用到各种开源项目 。一开始没必要直接钻研源码,先要学习开源项目背景 , 能解决什么问题 , 开源作者的项目理念,使用了哪些技术等等 。
这些清楚以后 , 可以找自己感兴趣的技术点或者模块去针对性的学习,千万不要想着一开始就想一网打尽式的学习,没有针对性意味着没有重点 , 没有重点很大概率就会白学或者学到的就会很少 。
先推荐几个经典的开源项目供你参考:
如果你有自己比较看好的开源项目会更好,兴趣永远是前进的第一步 。
相对前几年,Go语言的书籍、教程,各种文章都如雨后春笋一般越来越多,学习起来也更加方便 , 但是同时也要注意不要过度陷入知识碎片而无法自拔,最重要的还是要去系统去学习一下,针对性的练习、实践和应用 。
本文到此结束,希望对大家有所帮助!

猜你喜欢