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

wx57f63dceec388 · · 3238 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

参考链接: Go语言-决策

以下内容来自知乎: 

链接:https://www.zhihu.com/question/30461290 

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

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

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

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

Go语言圣经中文版 https://www.gitbook.com/book/yar999/gopl-zh/details 

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

Go语言开发环境搭建详解Go语言实战笔记(一)| Go包管理Go语言实战笔记(五)| Go 切片Go语言实战笔记(九)| Go 接口Go语言实战笔记(十三)| Go 并发资源竞争Go语言实战笔记(二十)| Go ContextGo语言实战笔记(二十四)| Go 反射Go语言实战笔记(二十六)| Go unsafe 包之内存布局

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

Go语言经典库使用分析(一)| 开篇Go语言经典库使用分析(二)| Gorilla ContextGo语言经典库使用分析(三)| Gorilla Handlers 详细介绍Go语言经典库使用分析(四)| Gorilla Handlers 源代码实现分析Go语言经典库使用分析(五)| Negroni 中间件(一) - 飞雪无情的博客Go语言经典库使用分析(六)| Negroni 中间件(二)Go语言中间件框架 Negroni 的静态文件处理源码分析 - 飞雪无情的博客Go语言经典库使用分析(七)| 高性能可扩展 HTTP 路由 httprouter - 飞雪无情的博客Go语言经典库使用分析(八)| 变量数据结构调试利器 go-spew - 飞雪无情的博客Golang Gin 实战(一)| 快速安装入门Golang Gin 实战(二)| 简便的Restful API 实现Golang Gin 实战(三)| 路由参数Golang Gin 实战(四)| URL查询参数的获取和原理分析Golang Gin 实战(五)| 接收数组和 MapGolang Gin 实战(六)| 获取Form表单参数和原理分析Golang Gin 实战(七)| 分组路由源代码分析 - 飞雪无情的博客Golang Gin 实战(八)| JSON渲染输出 - 飞雪无情的博客Golang Gin 实战(九)| JSONP跨域和劫持 - 飞雪无情的博客Golang Gin 实战(十)| XML渲染 - 飞雪无情的博客Golang Gin 实战(十一)| HTML模板渲染 - 飞雪无情的博客Golang Gin 实战(十二)| ProtoBuf 使用和源码分析原理实现 - 飞雪无情的博客Golang Gin 实战(十三)| 中间件详解看这一篇就够了 - 飞雪无情的博客

基础进阶: 

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

web编程:直接看go web编程这本书籍。 

除了上面的几个合集,再具体补充一些放在下面。 

书籍 

《GO圣经》,就是那本 《GO程序设计语言》,studygolang 上有电子书。《Go 语言实战》,有了一定的 GO 基础后再来读这本书,没有找到电子版,可以看纸质版;《GO Web 编程》,主要是介绍如何用 GO 进行 Web 开发,是从国外翻译来的一本书,通过 net/http 标准库介绍 Go 如何开发 web 项目,很纯粹,这本书很快就能看完,难度不大,但有一读的必要。《Go语言标准库》,通过 GO 的标准库来学习 GO 语言,作者是 studygolang 发起人,未完稿。《Go 学习笔记》,雨痕大佬的书,真的是学习笔记,对 Go 语言总结非常到位,每章都很精彩,不过读这本书最好有些 Go 的经验,不然会有点枯燥,因为文字描述都是点到即止;《GO 语言高级编程》,涵盖CGO、Go汇编、RPC实现、Web框架、分布式系统等高阶主题;

视频 

韩老师非常小白的课程:https://www.bilibili.com/video/av35928275/;慕课网上的一系列课程,可以去了解下;各大视频教程网可以都去搜罗一下;补充:我在 B 站上也录了下小视频,不成系统,有相关需要的可以看下,访问我的 B站;

Go官方资料 

无论学习什么知识,第一手资料基本都是首发于官网。进入到官网后,会看到很多资源。 

文档:golang.org/doc,官方文档,仔细读下文档首页并分类,了解下自己要学哪些内容;一览:tour.golang.org,交互式运行环境,不安装golang便可体验学习它的语法与使用;指南:golang.org/ref/spec,golang学习指导手册,从基础语法到高级特性全部都有介绍;标准库:golang.org/pkg/,可以查看所有的官方库的接口、源码以及使用介绍;博客:blog.golang.org/,不定期分享go的最佳实践,有些公司也会投稿介绍自己的案例;实验室:play.golang.org,感觉和tour类似,不过在这里编写的代码可以分享给别人;

GO 社区 

一门语言的发展需要有大批牛人的分享布道,也需要我们这些菜鸟学习有更多的参考路径。这一切都离不开社区。国内外也有很多优秀的go语言社区; 

go语言中文网,studygolang.com,分享Go 语言知识,聚合各种golang文章和书籍资料;go交流论坛,gocn.vip,go语言学习交流论坛;go官方讨论组,forum/golang-nuts,golang的官方邮件讨论组;

  

1.熟悉最基本的知识。例如语言发展历史,基本语法,在武侠里是基本招式 

2.看官网。网上经常有人问,Go牛逼在哪?或者Go到底有什么优点?看到大家你一言我一句,可是看看官网第一段话: 

The Go programming language is an open source project to make 

programmers more productive.


Go is expressive, concise, clean, and efficient. Its concurrency 

mechanisms make it easy to write programs that get the most out 

of multicore and networked machines, while its novel type system 

enables flexible and modular program construction. Go compiles 

quickly to machine code yet has the convenience of garbage 

collection and the power of run-time reflection. It's a fast, 

statically typed, compiled language that feels like a dynamically 

typed, interpreted language. 

很清晰,很简洁的已经总结了,何必问来问去。官方网站是这门知识最正宗最前沿的知识,一定要追随。 

3.多研究,多思考,多问自己问题。我们可以看到不同的学习者,遇到一个东西有的问题很多,有的没有问题,这是为什么?是他都会了?不是,是他没有去思考。没有问自己为什么?有了为什么没有动力去找答案。差距就出来了。 

4.多练习,我们可以看到张无忌就算有神功也需要练习啊。多练习才会遇见问题,才会收获经验。 

5.多总结,多交流。例如写博客,做分享,讨论等等。 

  

学习Go语言建议还是系统的学习,先从基本语法开始。 

step1:基础阶段: 

先看看这个,是Golang基础的,虽然是英文版,但是说的简单明了。 

https://golangbot.com/learn-golang-series/ 

然后配合练习代码: 

https://github.com/GoesToEleven/GolangTraining 

中文版的可以看看这套,是我在上一家公司写的go的入门级教程《Go语言入门指南》,在github上还有配套代码: 

https://www.chaindesk.cn/witbook/13 

step2:web阶段 

可以直接看https://astaxie.gitbooks.io/build-web-application-with-golang/ 

配合练习内容: 

https://github.com/GoesToEleven/golang-web-dev 

或者看看我写的web教程《GoWeb开发实战(Beego框架实现项目)》: 

https://www.chaindesk.cn/witbook/17 

step3:框架和项目 

老司机带你飞系列: 

https://github.com/happyer/distributed-computing 

还有我写的Gin框架的教程:《Gin框架开发与实战》 

https://www.chaindesk.cn/witbook/19 

对了, 我还写了一个爬虫的:《golang实现网络爬虫》 

golang实现网络爬虫 | 愿码-连接每个程序员的故事 

推荐阅读:茹姐:go语言如何入门?三分钟了解Go语言的前世今生茹姐:go语言基础入门教程:Go语言logo和版本 

茹姐:go入门如何入门?入门学习教程系列:Go语言的核心特性茹姐:转行IT该学哪门编程语言?Go语言和Java、Python等其他语言的对比分析 

  

由于安全性高、语法简单、编译快速等诸多特点,Go语言人气日渐高涨,越来越多的大公司开始使用Go语言,包括Google、Facebook、腾讯、百度、阿里巴巴、今日头条等等。 

入门 

万事开头难,所以入门的书籍最好是深入浅出,通俗易懂又饶有趣味。 

这本《Go语言趣学指南》就是为初学者量身打造,帮助初学者顺利入门Go语言的! 

 

Go语言入门书学习过程充满乐趣,并能积累丰富的实战经验

内容简介: 

本书循序渐进地介绍了使用Go语言必需的基础知识,书中的内容首先从变量、循环、分支、类型等基础知识开始,逐渐进阶至函数、方法、收集器和结构,最后再深入到指针、错误处理和并发等高级特性,并且每个单元都包含相应的章节和单元测试。 

适合初学者,学习曲线平缓,循序渐进

为了让起步的过程变得更容易一些,书中的所有代码清单和练习都可以在 Go Playground 里面执行,你在阅读这本书的时候甚至不需要安装任何东西。 

全书不到300页,初学者读起来真的是毫!无!负!担! 

趣味性强,不知不觉中打下Go语言基础

作者在书中列举了大量跟天文以及航天有关的例子,读者不仅可以计算从地球乘坐宇宙飞船航行至火星所需的天数,还可以在火星上放置探测器以便查找生命存在的痕迹,甚至还要想办法改造火星,使它能够适宜人类居住。 

书中很多地方都带有可爱的Go语言吉祥物地鼠(gopher)插图,为读者的学习旅途增添乐趣。 

无论你是打算使用Go编写大型的并发Web服务,还是只想用Go编写小型脚本和简单的工具,《Go语言趣学指南》这本书都会帮助你打下坚实的基础! 

《Go语言入门经典》 

 

易上手的Go语言入门教程全球销量逾百万册的系列图书

内容简介: 

本书分为24章,讲解了使用Go语言编写高质量程序的方法,其内容涵盖了Go语言特性和标准库安装包,Go与JavaScript的对比,Go命令行工具,Go中的基本概念(比如类型、变量、函数、控制结构、指针、接口等),错误处理,Goroutine和通道,Go代码测试,使用Go编写HTTP客户端与服务器,处理JSON和文件,部署Go代码等。 

本书适合想要掌握Go语言的零基础读者以及对Go语言感兴趣的程序员学习,还可作为高等院校教授Go语言课程的教材。 

《Go语言编程》 

 

帮助读者迅速消除对Go语言的陌生感,深入了解Go语言的绝佳作品Go语言专家许式伟倾情推出

内容简介: 

本书首先概览了Go语言的诞生和发展历程,从面向过程编程特性入手介绍Go语言的基础用法,让有一定C语言基础的读者可以非常迅速地入门并开始上手用Go语言来解决实际问题,之后介绍了Go语言简洁却又无比强大的面向对象编程特性和并发编程能力,至此读者已经可以理解为什么Go语言是为互联网时代而生的语言。 

从实用性角度出发,本书还介绍了Go语言标准库和配套工具的用法,包括安全编程、网络编程、工程管理工具等。 

对于希望对Go语言有更深入了解的读者,本书也特别组织了一系列进阶话题,包括语言交互性、链接符号、goroutine机理和接口机制等。 

这本书面向的读者是所有打算用Go语言的开发者,主要包括目前使用C、C++、Java、C#的开发人员,甚至一些Python、PHP开发人员也可能转为 Go 程序员。 

精选书评: 


 Go语言具有简洁有力的语言表达能力、强大的系统开发能力、极高的运行效率、卓越的并发和并行能力、优秀的工程管理支持,以及美好的编程体验。我们曾经在其他语言中花费大量气力才能获得的一些能力,在Go中可以轻松得到。

  许式伟在Go语言出现后很快就把它用于大型项目,带领七牛团队积累了大量Go编程经验。这本书除了完整介绍Go语言特性以外,还深入剖析了语言实现机制。作为服务器软件开发者和编程语言爱好者,我强烈推荐此书。

  ——李杰,盛大文学首席架构师

 

进阶 

《Go语言高级编程》 

 

作者是国内第一批Go语言爱好者和Go语言代码的贡献者提炼大型分布式系统开发的实战经验聚焦CGO、汇编、Web框架等前沿主题,深入探究Go语法设计的底层实现原理

内容简介: 

本书从实践出发讲解Go语言的进阶知识。本书共6章: 

第1章简单回顾Go语言的发展历史; 

第2章和第3章系统地介绍CGO编程和Go汇编语言的用法; 

第4章对RPC和Protobuf技术进行深入介绍,并讲述如何打造一个自己的RPC系统; 

第5章介绍工业级环境的Web系统的设计和相关技术; 

第6章介绍Go语言在分布式领域的一些编程技术。 

书中还涉及CGO和汇编方面的知识,其中CGO能够帮助读者继承的软件遗产,而在深入学习Go运行时,汇编对于理解各种语法设计的底层实现是必不可少的知识。此外,本书还包含一些紧跟潮流的内容,介绍开源界流行的gRPC及其相关应用,讲述Go Web框架中的基本实现原理和大型Web项目中的技术要点,引导读者对Go语言进行更深入的应用。 

本书适合对Go语言的应用已经有一些心得,并希望能够深入理解底层实现原理或者是希望能够在Web开发方面结合Go语言来实现进阶学习的技术人员学习和参考。 

《Go语言实战》 

 

作者:[美]William Kennedy,Brian Ketelsen,Erik St. Martin 译者:李兆海 

Go语言领域极具声望的技术专家力作关注语言的规范和实现,为读者提供一个专注、全面且符合语言习惯的视角

内容简介: 

Go语言结合了底层系统语言的能力以及现代语言的高级特性,旨在降低构建简单、可靠、高效软件的门槛。 

本书向读者提供一个专注、全面且符合语言习惯的视角,同时关注语言的规范和实现,涉及的内容包括语法、类型系统、并发、管道、测试,以及其他一些主题。 

本书适合有一定其他编程语言经验,想要开始学习Go 语言或者更深入了解Go 语言及其内部机制的中级开发者。 

《Go并发编程实战(第2版)》 

 

国内知名Go语言技术布道者的再造之作深入Go语言及其并发原理,挖出并发编程zui佳实践,百样示例助你成为多核计算时代的Go程序高手

内容简介: 

本书首先介绍了Go语言的优势特性、安装设置方法、工程结构、标准命令和工具、语法基础、数据类型以及流程控制方法,接着阐述了与多进程编程和多线程编程有关的知识,然后重点介绍了goroutine、channel以及Go提供的传统同步方法,之后通过一个完整实例——网络爬虫框架进一步阐述Go语言的哲学和理念,同时分享作者在多年编程生涯中的一些见解和感悟。 

本书适用于有一定计算机编程基础的从业者以及对Go语言编程感兴趣的爱好者,非常适合作为Go语言编程进阶教程。 

精选书评: 


 Go语言的掌握过程是一个渐进过程,需要一本实战型的百科全书来应对。我一直和团队推荐这本《Go并发编程实战》,反馈好评度高。现在第2版推出,继续强力推荐!

  ——肖德时,数人云联合创始人 & CTO

 

应用 

Go语言编写Web应用

由于Go语言拥有优异的并发编程支持、函数式编程、简洁且极具可读性的语法以及灵活且清晰的包管理系统等特点,使用Go语言进行Web开发已经日益流行。 

《Go Web编程》 

 

Go语言Web开发实战教程囊括了关于Go Web应用开发和部署的全部知识

内容简介: 

本书将教读者运用现代化设计理念构建Go Web应用的方法。 

阅读本书能让读者学会如何通过依赖注入设计模式来编写测试替身,如何在Web应用中使用并发特性,还有如何在Web服务中创建以及处理JSON数据和XML数据。除此之外,读者还将学会如何尽可能地减少应用对外部框架的依赖,并了解大量与应用测试以及应用部署有关的有价值的生产技术。 

Go语言开发Docker

Docker是一个开源的应用容器引擎,开发者可以利用Docker打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。 

Go语言部署简单,对第三方的依赖少,这使Go语言成为开发Docker的首选语言。 

《深入浅出Docker》 

 

Docker技术入门与实践指南教程容器与容器云解析帮助您快速建立Docker技术知识体系

内容简介: 

这是一本关于Docker的图书。本书的宗旨是从零开始学习Docker,因此读者无须任何前置知识储备。 

全书分为17章,从 Docker 概览和 Docker 技术两部分进行全面解析,深入浅出地介绍了 Docker 的相关知识,清晰详细的操作步骤结合大量的实际代码帮助读者学以致用,将Docker知识应用到真实的项目开发当中。 

本书适合对Docker感兴趣的入门新手、Docker技术开发人员以及运维人员阅读,也可作为Docker认证工程师考试的参考图书。 

《第一本Docker书(修订版)》 

 

Docker技术入门与实战基于Docker 1.9及以上版本Docker公司前副总裁力作

内容简介: 

这是一本带领读者进入Docker世界的入门书。本书专注于Docker 1.9及以上版本,指导读者完成Docker的安装、部署、管理和扩展,带领读者经历从测试到生产的整个开发生命周期,让读者了解Docker适用于什么场景。书中先介绍Docker及其组件的基础知识,然后介绍用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。 

精选书评: 


 本书系统而又深入浅出地介绍了与Docker部署和应用相关的各个方面,体现了Docker的最新进展,并附有大量详尽的实例。无论系统架构师、IT决策者,还是云端开发人员、系统管理员和运维人员,都能在本书中找到所需的关于Docker的内容。本书非常适合作为进入Docker领域的第一本书。

  ——商之狄,微软开放技术(中国)首席项目经理

 

《Docker实践》 

 

Docker容器实战教程涵盖开发环境、DevOps流水线、生产环境落地以及相关实用技巧书籍

内容简介: 

本书由浅入深地讲解了Docker的相关内容,涵盖从开发环境到DevOps流水线,再一路到生产环境的整个落地过程以及相关的实用技巧。书中介绍Docker的核心概念和架构,以及将Docker和开发环境有机、高效地结合起来的方法,包括用作轻量级的虚拟机以及构建和宿主机编排、配置管理、精简镜像等。不仅如此,本书还通过“问题/解决方案/讨论”的形式,将“Docker如何融入DevOps流水线”“如何在生产环境落地”等一系列难题拆解成101个相关的实用技巧,为读者提供解决方案以及一些细节和技巧方面的实践经验。阅读本书,读者将学到的不只是Docker,还包括持续集成、持续交付、构建和镜像管理、容器编排等相关领域的一线生产经验。本书编写时一些案例参考的Docker版本是Docker 1.9。 

《Docker实践》要求读者具备一定的容器管理和运维的基础知识,适合想要将Docker投入实践的相关技术人员阅读,尤其适合具有中 高 级DevOps和运维背景的读者阅读。



有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:wx57f63dceec388

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

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3238 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传