作者:量子位

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

有善良的人类@hoanhan101,分享了一份完整Go语言学习笔记,记录了他从零开始学习Go所用的方法,以及对应全部学习资料。Hacker News热度1天升至400,一句话概括:适合新手服用。先上资源地址:https://github.com/hoanhan101/ultimate-go​github.com三阶段学习最全笔记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-gohackernews讨论区:https://news.ycombinator.com/item?id=20701671— 完 —量子位 · QbitAIվ'ᴗ' ի 追踪AI技术和产品新动态量子位​www.zhihu.com欢迎大家关注我们,以及订阅我们的知乎专栏发布于 2019-09-20​赞同 579​​10 条评论​分享​收藏​喜欢收起​知乎用户977 人赞同了该回答先说下我个人的情况吧,我本是个 Python 重度使用者,年初出于工作的需要,开始学习 Golang ,学到现在已经有4个多月的时间了。期间为了记录自己的学习过程,同时给正想学习 Go 语言的同学一些帮助,我将自己的所学写成一个教程,发布在我的 Github 上(https://github.com/iswbm/GolangCodingTime)以及我的个人网站上。网站链接 是:http://golang.iswbm.com/目前已经更新了 30 多篇,覆盖了 Golang 90% 的入门必学知识点,内容我还在不断完善更新中,而且我还规划实战板块,比如 Web 开发,爬虫程序的编写等,敬请期待。如果你还在入门阶段,或者准备入门,那么建议把我的个人网站收藏一下,完全可以当做 wiki 查阅。对于基础知识我讲的还是比较全面,细致的。

下面展示一张图片404状态的效果

写 《Go 编程时光》这个系列教程,为了让文章出错的概率降到最低,我如履薄冰,我每写一个知识点,就要翻阅大量的其他人的教程、博客,以及官方文档。也因此,我收藏了很多学习 Go 语言的网站和资源。 俗话说,授人以鱼,不如授人以渔。今天就把这些资源全部分享给大家。接下来,废话不多说了,直接上干货。下面网站比较多,我把将它们分成 五大类,你可以根据自己的实际 情况进行选择:入门阶段Web开发进阶阶段工具使用技术社区源码阅读另外,为了方便大家,我制作了张思维导图,这下清晰多了吧(hhhhh

1. 入门阶段Go语言入门教程C语言中文网的系列教程,对新手非常友好的一个入门教程,很多内容我也是从这里学习的,推荐大家看看。网站链接:http://c.biancheng.net/golang/

菜鸟教程 - Go 系列菜鸟教程(RUNOOB)是一个一站式编程入门学习网站,想当年我学习 Python 时也经常 在这里同样也有 Go 语言的系列。网站链接:https://www.runoob.com/go/go-tutorial.html

易百教程 - Go 系列和菜鸟教程,W3Cschool一样,易百教程也是一个一站式的编程语言入门教程网站,目前为止,共发布了 157 个系列教程,每个教程都很适合新手学习。网站链接:https://www.yiibai.com/go/

W3Cshcool - Go 系列W3Cschool 也是一个专业的编程入门学习及技术文档查询应用,提供包括HTML,CSS,Javascript,jQuery,C,PHP,Java,Python,Sql,MySQL,Golang 等编程语言和开源技术的在线教程及使用手册,是类似国外w3schools的学习社区及菜鸟编程平台。网站链接:https://www.w3cschool.cn/go/https://m.w3cschool.cn/appDownload (二维码自动识别)TopGoer 教程这个网站是我在搜索资料的时候偶然发现的,从目录可以看出内容非常多,网络编程、并发编程,很多主流的 Web 框架都有。网站链接:http://www.topgoer.com/

The Way to Go《the way to go》的 中文版本,目前还在持续更新中,截止今天(2020/04/30)翻译进度已经达到 96.92%。网站链接:https://learnku.com/docs/the-way-to-go

极客学院(Go 教程)极客学院,这个网站里收集了很多领域的编程语言相关的教程,在这里依然可以找到不少 Go 的教程。我不知道这些内容是否获得授权,但对于要学习需求的同学来说,确实是一个不错的网站。网站链接:https://wiki.jikexueyuan.com/list/go/

Go 语言简明教程网站链接:https://geektutu.com/post/quick-golang.html

Go by Example这个网站的 idea 非常好,网站里收集了很多的小例子,来帮助你快速了解 Go 语言里那些基础的知识点。不过要深入理解这些知识,还是需要你学习更多的资料,并加以练习。网站链接:https://gobyexample-cn.github.io/

2. Web开发gin 中文文档网站链接:https://github.com/skyhee/gin-doc-cnbeego 开发文档网站链接:https://www.kancloud.cn/hello123/beego/126086echo 中文文档网站链接:https://www.bookstack.cn/read/go-echo/README.mdIris 中文文档网站链接:https://studyiris.com/doc/Buffalo 中文文档网站链接:https://learnku.com/docs/buffalo-doc-cnRevel 中文文档网站链接:https://www.bookstack.cn/books/gorevel-manual-zh3. 进阶学习跟煎鱼学Go煎鱼大佬的博客,跟着学习了很多的干货。良心推荐一波。网站链接:https://eddycjy.gitbook.io/golang/

Go语言圣经本书由《C程序设计语言》 的作者Kernighan和谷歌公司Go团队合作编写而成,是关于Go语言编程的权威著作。网站链接:https://books.studygolang.com/gopl-zh/http://golang-china.github.io/gopl-zh/ (二维码自动识别)mojotv 进阶系列一个致力于 Go 语言编程知识分享的高质量网站,里面有大量关于 Go 进阶的文章,此外还有 Python、 Docker ,K8S ,算法的文章。我试图在网站上找出作者的相关信息,不过并没有什么收获。网站链接:https://mojotv.cn/404#Golang

Go 语言高级编程网站链接:https://chai2010.gitbooks.io/advanced-go-programming-book/content/

4. 工具使用Go 命令教程go 的命令非常多,如果想系统的学习,推荐郝林的 Go 命令教程,非常的全。网站链接:1、 https://hyper0x.github.io/go_command_tutorial/#/2、https://wiki.jikexueyuan.com/project/go-command-tutorial/0.0.html

Uber 编程规范Uber 开源了其公司内部使用的《 Go 语言编程规范》。该指南是为了使代码库更易于管理,同时让工程师有效地使用 Go 语言特性。文档中详细描述了在 Uber 编写 Go 代码的各种注意事项,包括具体的“Dos and Don’ts of writing Go code at Uber”,也就是 Go 代码应该怎样写、不该怎样写。网站链接英文原文:https://github.com/uber-go/guide/blob/master/style.md中文译文:https://www.infoq.cn/article/G6c95VyU5telNXXCC9yO

Go WalkerGo Walker 是一个可以在线生成并浏览 Go 项目 API 文档的 Web 服务器,目前已支持包括 GitHub 等代码托管平台。

CTOLib 码库像是一个收集中心,收藏着网络上的各种教程资源 ,里面也可以看到 Go 的很多工具,教程。网站链接:https://www.ctolib.com/go/categories/go-guide.html

5. 技术社区GoCN网站链接:https://gocn.vip/

Go 语言中文网Go 语言爱好者的聚集地,是目前最大的Go 语言中文社区,关于 Go 语言 你所需要的,不需要的,都可以在这里找得到,包括 Go历史版本的下载,各种高质量的电子书资源,各种大牛写的高质量文章等。 网站链接:https://studygolang.com/

6. 源码学习Go 夜读这是一个由众多资深 Gopher 组织的开源项目,主要是对 Go 源码进行解读,并约定每周四晚上进行技术分享。网站链接:https://talkgo.org/

Go 语言原本网站链接:https://changkun.de/golang/

Go 语言设计与实现目前还在更新中,写得有点深,进阶的可以看看网站链接:https://draveness.me/golang/

能翻到这里的,一定是真爱了,本以为 Go 语言还处于不温不火的状态,没想到收集整理一下,资料还挺多的。整理太不容易了,弄了一天,有点累。。。觉得有帮助的,给个赞呀 ^_^ (听说双击屏幕有惊喜!!编辑于 05-06​赞同 977​​43 条评论​分享​收藏​喜欢收起​asta谢成功的习惯比成功更重要969 人赞同了该回答我觉得学习一门语言最重要的就是做到三点,第一看基础知识,第二学习抄代码,第三学习写代码第一点,很多人都觉得上来就动手写,但是你基础的东西都没掌握,怎么写呢?欲速则不达,所以基础的东西还是必须要先掌握好.这里推荐你几个基础的入门材料:http://tour.golang.org/#1邢星翻译的mikespook/Learning-Go-zh-cn · GitHubGo by Example我觉得你把这几个基础掌握之后就可以开始抄袭代码了,如果你之前有PHP的开发经验,那么也许我写的这本书对你了解golang有帮助, https://github.com/astaxie/build-web-application-with-golang第二点,我们很多时候开始写代码都是没什么思路,也无从下手,但是我们可以模仿别人写代码,上海俗话里面常说"吃大户,用大户,消灭大户",我们就是"看代码,抄代码,最后自己写代码".这里给你几个入门级别的代码看看学习一下:Web.go - Quickstart 很简单,就是学习他的路由怎么实现的,如何编写自己的路由icub3d/home 路 GitHub 这是一个Go+ AngularJS的实现,看看如何做API应用最后我列一下你可以自己参考去实现的一些功能,我当初培训我们战虎班的同学就是用这些来一起学习的.日志分析IP库分析管理后台查看分析日志第三点,自己写代码,这个时候就是已经对golang有了一定的了解了,那么我们就可以开始做自己的项目了,做项目最想就是快速开发,那么我就推荐你https://github.com/astaxie/beego 使用beego框架可以很快速的开发你的Web或者API应用Homepage - Docker: the Linux container engine 使用docker来做虚拟化skynetservices/skynet · GitHub 学习分布式coreos/etcd · GitHub 分布式应用这个阶段就是找各种东西用golang来写,多写就会理解越来越深入. 交流群:148647580Go技术社区:Go 技术社区编辑于 2019-10-23​赞同 969​​31 条评论​分享​收藏​喜欢收起​基因宝广告​不感兴趣知乎广告介绍为什么越来越多的人开始做基因检测,这是一次重新认识自己的机会!2ml唾液,破解自己身上的秘密。测基因,只选基因宝。原价398,现在只要9块9起,快递上门,你不来测测吗?查看详情茹姐Go/Java/Python B站:rubyhan131432 人赞同了该回答go语言的学习分为几个部分:第一:go语言 的语法阶段 建议看一些初级教程,在线课程,或者是书籍资料,跟着视频学习也可以,最主要的是要反复的练习代码。 推荐本人的一套go语言基础教程:Go语言是谷歌2009年发布的第二款开源编程语言,它是基于编译、垃圾收集和并发的编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美 C / C++代码的速度,而且更加安全、支持并行进程。Go语言易学易用,学习成本很低。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。1.知名编程语言或系统的发展简史2.Go语言的前世今生3.Go语言logo和版本4.Go语言的核心特性5.Go语言的优势和其他语言的对比6.Go语言能做什么7.Go语言环境搭建8.第一个程序HelloWorld9. Go的执行原理以及Go命令(上)10 Go的执行原理以及Go命令(下)11 安装Goland开发工具12 编码规范13 变量的概念和使用14 变量的内存分析和注意事项15 常量的使用16 iota关键字17 基本数据类型18 string类型及字符编码19 基本数据类型之间的转换第二:goweb阶段也可以看一些系列教程。第三:项目阶段这个就需要找一些小型项目代码了。还有就是对应的框架资料,视频,系列文章都可以。可以看一下Davie老师( @Davie )的《Goweb开发之Iris框架实战课程》:是基于具备Go语言基础的同学的Web开发实战系列课程。在本课程中,同学们将能够学习到与Web开发相关的架构设计、逻辑分析、Iris框架的使用、数据库配置及操作、缓存和Session的使用、文件操作、数据序列化与反序列化等相关知识,是实际项目开发中必不可少的内容。 学完本章能掌握什么: 通过学习本课程,可以掌握搭建GoWeb服务,Iris框架的使用,数据操作,orm映射,Redis缓存,RESTful API 开发等相关技术知识点,掌握实战项目开发经验。 学习完该课程能做什么: 学习完本系列课程,你将掌握实战Web项目开发技术,积累项目开发经历。深刻理解Golang语言开发与Iris框架精髓。 课程目录 第1节:《web项目开发介绍及实战项目介绍》 第2节:《Iris框架介绍及安装》 第3节:《Get、Post、Put等请求及数据返回格式》 第4节:《路由功能处理方式》 第5节:《Iris框架设置操作》 第6节:《mvc包使用》 第7节:《Session的使用和控制》 第8节:《实战项目资源导入和项目框架搭建》 第9节:《项目文件配置和项目初始化运行》 第10节:《xorm框架知识介绍》 第11节:《xorm结构体映射规则》 第12节:《xorm表基本操作及高级操作》 第13节:《管理员登录功能开发》 第14节:《Git操作和代码管理》 第15节:《mysql图形化操作与数据导入》 第16节:《管理员查询功能、退出功能》 第17节:《后台管理页面统计功能开发(1)》 第18节:《后台管理页面统计功能开发(2)》 第19节:《Redis介绍和安装》 第20节:《Redis操作学习》 第21节:《项目中Redis实战应用》 第22节:《用户列表、订单列表功能开发》 第23节:《文件操作》 第24节:《商铺列表功能开发》 第25节:《添加食品类别功能开发》 第26节:《级联查询并添加商铺记录》 第27节:《添加食品记录功能》 第28节:《删除用户记录》 第29节:《地址关键词模糊查询功能》 第30节:《GoWeb开发总结和项目回顾》