编辑点评:学习Go语言pdf版
Google工程师亲授,从学习语言语法特性到函数式编程、并发编程等等。理论与实战结合,帮助快速掌握Go语言。通过研读标准库等经典代码设计模式,启发读者深刻理解Go语言的核心思维,进入Go语言开发的更高阶段。
学习目标
从基础语法到应用拓展,学习从单体到并发到分布式的项目演进过程。
课程重点
1、函数式编程、面向接口、并发编程
2、Go语言工程化
3、爬虫项目:单任务爬虫、多任务并发爬虫、分布式爬虫
内容介绍
详细讲述Go语言规范与语法细节及开发中常见的误区,通过研读标准库等经典代码设计模式,启发读者深刻理解Go语言的核心思维,进入Go语言开发的更高阶段。
本书详细讲解了Go语言数据类型、关键字、字面量、基本语法等基础概念及Go项目的工程构建、测试、编译与运行等;深入讲解了协程(goroutine)和通道(channel)等与并发编程有关的概念;
还介绍了系统标准库、网络编程和第三方包。读者掌握本书内容后,可以顺利进行实际项目开发。
本书适合Go语言初学者和有一定经验的程序员阅读。
学习Go语言相关内容解析
本书详细讲解了Go语言基础知识点,并联系实际指出其可能存在的陷阱,帮助读者加深学习时的理解。本书还结合流行度较高的开源第三方包,引导读者进行更高级的实际项目开发。
本书非常适合Go语言新手细细阅读。有一定经验的开发人员,也可以根据自己的情况,选择一些章节来看。
第 1~4章为基础部分,主要讲解Go语言的基础知识,包括Go语言的安装、基本语法、标识符、关键字、运算符、标点符号、字面量等,以及Go项目的工程构建、编译与运行等。
第 5~8 章为中级部分,主要讲解Go语言的复合数据类型,包括数组(array)、切片(slice)、字典(map)、结构体(struct)、指针(pointer)、函数(function)、接口(interface)和通道(channel)类型等。利用灵活的type关键字,可以自定义各种需要的数据类型。函数提供了更直接的数据处理能力,而通过panic,recover,defer处理错误的方式,也是Go语言的典型特征。
第9~13章为高级部分,主要讲解结构体、接口和方法,它们是Go语言简单与组合思维的基础。非常友好地支持并发是Go语言天然具有的典型特征,协程(gorountine)和通道(channel)配合,加上sync 包提供的系列功能,使我们可以很方便地编写支持高并发的代码。
第14~16章为拓展部分,主要介绍Go语言提供的官方标准库,包括OS操作、文件I/O、网络传输处理、指针相关操作、代码反射、日志记录等。这些包可以让我们快速进入实际开发。另外对MySQL数据库以及LevelDB、BoltDB数据库的操作有简单介绍。
第17、18章为应用部分,主要以网络爬虫和Web框架为例,进入实际开发。网络爬虫是互联网服务中比较重要的功能,通过互联网抓取、分析、保存资料是程序员的一项基本能力,读者可以看到Go语言在此方面也是游刃有余。而利用Gin这款轻量级的Web框架,可以很方便地搭建各种Web服务。
自2009年Go语言面世以来,已经有越来越多的公司转向Go语言开发。而Go语言以语法简单、学习门槛低、上手快著称,但入门后很多人发现要写出地道的、遵循 Go语言思维的代码却实属不易。
我作为Go语言的爱好者,在阅读系统标准库源代码或其他知名开源包源代码时,发现大牛对这门语言的了解之深入,代码实现之巧妙优美,除了膜拜还是膜拜。所以我建议你有时间多多阅读这些代码,网上说Go大神的标准是“能理解简洁和可组合性哲学”。的确,Go语言追求代码简洁到极致,而组合思想可谓借助于结构体和接口而成为Go的灵魂。
function、method、interface、type等名词是程序员们接触比较多的关键字,但在Go语言中,你会发现,它们有更强大、更灵活的用法。当你彻底理解了Go语言相关基本概念,以及对其特点有了深入的认知(当然这也是这本书的目的),再假以时日多练习和实践,我相信你很快就能真正掌握这门语言,成为一名出色的Gopher。
本书最早通过网络发布,有不少关注Go语言的朋友通过各种途径给了不少建议,这里要感谢网友Joyboo、林远鹏、Mr_RSI、magic-joker等。
本书最终得以出版,需要感谢李岩兄的鼓励和帮助,以及其他各位朋友和老师们,感谢你们的鼓励和帮助,感谢你们的支持!
最后,希望更多的人了解和使用Go语言,也希望阅读本书的朋友们多多交流。虽然本书中的例子都经过实际运行,但难免会有错误和不足之处,烦请您指出。书中其他疏漏之处也恳请各位读者斧正。
祝各位Gopher工作开心,编码愉快!
学习Go语言需要哪些基础?
先放结论:没你想的那么难,干就完了。
这里插一句,话说前几日看到过一句话:现在的80后真是可怕,狠起来什么都学!
打完鸡血,接下来说说怎么学。
Go语言语法特别简单简洁,有C的底子更好,差一些也没关系。前提是你要真心想学,才有足够的动力去学。
初学Go语言首先弄懂基础语法和概念:基本数据类型、Struct、Array、map、Slice、指针、接口、map、内置函数,常用工具包等,还有接口和Slice的底层数据结构。这些不需要弄特别懂,能自己理解并自己描述我觉得就可以了,关键在实践和应用练习。
然后学文件操作、网络编程、锁、协程、对象序列化和反序列化,以及各种数据格式的封装等,这是进阶的内容。
学完上面两个阶段,就可以自己接触一些框架,然后搭建一个web服务器,来做一些测试和练习。Go各种框架都非常多了,github上star数过万的就有很多,这里列举几个:beego、iris、gin、echo、revel等。对于学习一些使用方法还是很有帮助的。
在第三个阶段做的过程中,自然就接触到了数据库,io,操作系统,网络,存储优化、需要排很多雷。到这一步,已经能够模块化开发,应对正式的开发任务需求了。
以上是作为从Java转过来的一枚现役goer的感悟吧,供大家讨论。
下面再来说说学习资料的问题。
我们码农界讲究追根溯源,所以最正宗的还是去官方哪里找找线索。
Go官方网站:https://golang.org/
Go官方文档:https://golang.org/doc/ 在这里有学习者关于Go这门语言的文档说明,可以参考学习。
中文Go社区:https://studygolang.com/ 这里是社区形式,适合有一定基础后,讨论一些技术问题或者交流观点,挺好的一个网站。
再有就是书籍:基础可以看《Go语言快乐学习》讲基础语法的一本书;进阶的话,可以看Go大神郝林的《Go并发编程实战》。
再有就是视频教程:现在各大付费网站也有很多关于Go框架的学习视频课程,也应该可以帮助到你。
Comments