掌握Go语言的零基础教程,学习资源和笔记一网打尽

发表时间: 2019-08-23 16:00

铜灵 发自 凹非寺

量子位 出品 | 公众号 QbitAI

如果你有意进大厂,学习Go语言一定要提到你的日程上了。

美国程序员招聘网站Hired发布《2019软件工程师状态》报告中显示,基于市场供需来说,Go语言使用者目前最受招聘市场欢迎

对比之下,你喜欢的Python受欢迎程度未排进前五。



Go蹿红,是因为它在业界的使用频率越来越高了。国外的Google、AWS、Cloudflare等,国内阿里、知乎等都已经大规模用Go语言开发相关产品,知乎还舍弃了Python用Go重构推荐系统。

今天,网友hoanhan101分享了一份完整Go语言学习笔记,里面记录了他从零开始学习Go语言时所用的方法,以及对应全部学习资料。

Hackernews热度1天升至400,好评如潮,一句话概括:

适合新手服用!



先上资源地址:

https://github.com/hoanhan101/ultimate-go

三阶段学习最全笔记

hoanhan101小哥建议,从零开始入门Go语言,可以分成三个阶段。

一阶段,啃完Ultimate Go Programming的视频讲座。

二阶段,利用Go语言培训社区Ardan Labs里提供的资源,强化实践。

三阶段,反过来研究关于计算机系统的理论教材,对系统知识再进行了解。

hoanhan101的学习思路是,注重理论与理论的结合,并且不能放弃死抠源代码。

重点来了,上述三个步骤需要的课程资源,hoanhan101小哥帮你整理好了,在GitHub资源中直接点开就能用。

这部分学习笔记大致分为几部分。

一是Go语言设计理念(Design Philosophy),内含介绍文档×1,不知道Go可以用来做什么可以从这里开始学习。

在这份入门指南中建议,在学习Go语言前必须制定一套设计理念,比制定盲目应用的规则更重要。

设计理念中特别强调了理解代码本身,学写代码其实和学一门自然语言有相似之处,需要阅读好的坏的代码加深语感,而这块是很多程序员缺乏的。

二是语言机制(Language Mechanics),包括Go语言的句法、数据结构、解耦三部分,每个分别有多个细分介绍。



三是软件设计(Software Design),内容细化到分组类型解耦过程、界面转换、界面污染,mock过程和常见雷区。

每个分类里还包含若干源代码分析,都是小哥自己学习时踩过的坑。



四是研究并发性(Concurrency),也就是在Go协程(Goroutine)、数据竞赛、多个channel和不用模式语境和模式下的操作过程。

五是测试和分析(Testing and Profiling),写到了基本单元测试、表测试、自测试等发测试方法,以及常见的标准等。

此外,还有各种包(Packages),作者表示这部分还在完善中。

Go语言资源大汇总

Go的热度不是盖的,这份资源一出,Hackernews上的讨论区就开始活跃了,不少网友继续贡献资源、分享心得,也有一些对这份学习笔记的评价。

用户@olah_1推荐了一个Go语言课程,表示:

Learn Go with Tests是我经历过的最好的编程语言课程。

地址:

https://github.com/quii/learn-go-with-tests

自带中文版资源:



用户@plinkplonk建议,如果搞不明白Go是什么,可以去OReilly上资料:

http://shop.oreilly.com/product/0636920046516.do

用户@ValentineC推荐了一个GitHub上5000+star的课程培训,来自上面提到的机构Ardan Labs:

https://github.com/ardanlabs/gotraining

还有网友贡献自制学习思维导图:

地址:

https://github.com/dzyanis/roadmap

也有人推荐学习如何在没有框架的情况下用Go语言编写web app:

https://github.com/thewhitetulip/web-dev-golang-anti-textbook

据说,这份资料是由有15年编程经验人完成,现在免费开放。

有了这么多过来人的建议,还怕学不好么~

传送门

GitHub地址:

https://github.com/hoanhan101/ultimate-go

hackernews讨论区:

https://news.ycombinator.com/item?id=20701671