- 首先, 去学习一下官方的入门教程. 这个只是一个大概了解的教程, 简单介绍一些简单的东西, 并没有太多的说明. (这个学起来很快的, 大概三天就差不多了吧, 而且可以在线实践一下的哦)
Go 语言之旅
- 开发环境
这里也可以忽略不看, 因为每一个教程都会介绍怎么配置环境.
- 操作系统
我个人十分推荐使用 Linux, 可以使用 Ubuntu
或 Deepin
. 这两款发行版桌面都做的挺不错的. 当然了, 有条件了可以使用 Mac开发环境. Windows 也是可以进行开发的啦.
Go 的开发环境安装十分简洁, 依赖很少. 如果是 Linux 下安装基本上下载一个二进制包, 解压, 放到一个目录下, 然后配置以下环境变量 GOROOT 就可以了,具体参考文档:
- 开发工具
这个可以根据自己的喜好去选择. 我比较喜欢的是 GoLand, 操作起来十分便捷, 舒服, 而且有各自简单错误的检查提示, 还有断点调试(虽然 这个工具也是Go官方提供的, 但是在 GoLand 使用也是很爽的), 全局搜索等等. 当然了, 各位也可以使用 VsCode
, SubText
等, 哪个用起来顺手用哪个, 哈哈.
- 巩固对语法的练习, 可以进行
LeetCode 刷常见题目
或者练习一些简单的项目
找一些简单的项目练手, 目的是巩固已经学习的语法, 让 Go 使用起来更加顺手. 当然啦, 在这其中就是去解决一些问题, 这样方便你快速提升能力.
那为什么选 刷 LeetCode 常见题目
呢?, 我们都知道, 算法的核心是思维方式, 然后就是用代码去表达你的思维. 一些常见的题目, 这道题怎么去解决自己肯定是心中有数了, 那么剩下来的就是用代码表达出来, 这个时候写代码的方式去巩固已经学习的语法.
不管使用什么方式, 在这个阶段最重要的多写代码.
- 将标准库全部都过一遍
代码写到一定程度了, 语法什么都没啥问题了. 这个时候, 你还要看看别人是怎样写代码的, 看看别人的规范. Go 的标准库就是就是 “别人” 写的很好的代码了, 从里面可以学习到很多东西的.
常用的全都看一遍, 如 strings/strconv/http
等, 如果有能力可以将它们都记住, 如果记忆力不太好(像我这样)至少也要知道有什么, 用到的时候通过手册可以快速找到.
官方标准库: https://golang.org/pkg
中文版的标准库: https://studygolang.com/static/pkgdoc/main
极力推荐: https://github.com/astaxie/gopkg.
可以在学习的时候看这个, 有关于标准库的详细说明和示例, 学习起来会容易一些,等全都明白了要使用的时候可以去查看上面的文档.
- 找进阶的书籍去阅读
到了这个阶段, 你的写出比较好代码应该是没啥问题了, 这个时候你应该去思考一些 Go 底层的问题, 比如, map 是怎样实现的, 和以往其他语言的 Map 的实现有啥不一样? chan 是怎样实现的, 为啥它能够并发? 等等. 带着这些问题, 去阅读一些书籍, 从中寻找答案.
比较推荐的就是 <<Go语言程序设计>>
, <<Go语言高级编程>>,
这两本写的非常不错, 里面会讲解一些常用的数据结构是怎样设计的, 需要注意的问题等等.
- 阅读 Go 的源码和学习一些优秀的博客
这个阶段, 要广泛阅读源码, 也要看看别人是怎样深入理解 go 底层设计的.
我比较推荐的博客的两位大神博客:
Go 语言设计与实现
鸟窝
大神写的很不错, 有的需要多次去阅读.
Go的源码推荐的就是, 其实我也没有读多少., runtime 当中的 map
, chan
的设计, sql
包关于数据库缓冲池的设计, http
包(这里面的内容 十分丰富, 需要花很长的时间去阅读), sync
包(并发编程), 当然了还有其他的一些非常常用的包了, GMP调度
, 内存管理
, 垃圾回收
这三个方面的内容需要长时期去钻研, 去领悟, 还要深入 Linux 的底层, 去理解计算机更加基础的东西.
去阅读一些优秀的开源库, 参与其中的开发优秀的开源库很多, 比如 docker
, k8s
, etcd
等等.
我就介绍这么多了, 本人能力实在有限, 上面好多自己做的也不是很足…