内容简介
这本书从整体的写作风格来说,会以介绍Go语言特性为主,示例则尽量采用作者平常的实践,而不是一个没有太大实际意义的语法示范样例。
本书作者背景极强,许式伟为原金山WPS首席架构师、曾是盛大创新院研究员,目前是国内Go语言实践圈子公认的Go语言专家。参与本书写作的几位作者都是实际用Go语言开发的项目的开发人员,有较强的实战经验。
本书以介绍Go语言特性为主,示例则尽量采用作者开发团队平常的实践,内容涉及内存管理(堆和栈)、错误处理、OOP、并发编程等关键话题。这本书面向的读者是所有打算用Go语言的开发者,主要包括目前使用C、C++、Java、C#的开发人员,甚至一些Python、PHP开发人员也可能转为Go程序员。
目录
- 序为什么我们需要一门新的语言?
- 第1章初识Go语言
- 1.1Go语言简史
- 1.2语言特性
- 1.3“Hello,world!”
- 1.4编译环境
- 1.5开发工具
- 1.6工程管理
- 1.7问题追踪和调试
- 1.8如何寻求帮助
- 本章小结
- 第2章顺序编程
- 2.1变量、常量和类型
- 2.1.1变量
- 2.1.2常量
- 2.1.3类型
- 2.2流程控制
- 2.2.1条件语句
- 2.2.2选择语句
- 2.2.3循环
- 2.2.4跳转语句
- 2.3函数
- 2.3.1函数调用
- 2.3.2不定参数
- 2.3.3多返回值
- 2.3.4匿名函数与闭包
- 2.4错误处理
- 2.4.1error接口
- 2.4.2defer
- 2.4.3panic和recover
- 第3章面向对象编程
- 3.1类型系统
- 3.1.1给类型添加方法
- 3.1.2值语义和引用语义
- 3.2结构体
- 3.2.1初始化
- 3.2.2匿名组合
- 3.2.3成员可访问性
- 3.3接口
- 3.3.1其他语言中的接口
- 3.3.2非侵入式接口
- 3.3.3接口赋值
- 3.3.4接口查询
- 3.3.5类型查询
- 3.3.6Any类型
- 第4章工程管理
- 4.1Go命令行工具
- 4.2代码风格
- 4.3工程组织
- 4.4单元测试
- 4.5文档管理
- 4.6工程构建
- 4.7包的管理与分发
- 4.8跨平台开发
- 4.8.1Go语言的跨平台能力
- 4.8.2交叉编译
- 4.8.3Android支持
- 第5章并发编程
- 5.1初识Goroutine
- 5.1.1基本用法
- 5.1.2Goroutine通信
- 5.2Channel
- 5.2.1基本用法
- 5.2.2关闭
- 5.2.3变量的传递
- 5.2.4单向Channel
- 5.2.5超时处理
- 5.3多核并行化
- 5.4同步机制
- 5.4.1sync包简介
- 5.4.2同步锁
- 5.4.3Once类型
- 第6章网络编程
- 6.1HTTP编程
- 6.1.1客户端编程
- 6.1.2开发HTTP服务器
- 6.2JSON
- 6.2.1JSON简介
- 6.2.2编码
- 6.2.3解码
- 6.2.4未知类型的解码
- 6.2.5流式读写
- 6.3网站开发
- 6.3.1一个最简单的网站
- 6.3.2开发一个相册网站
- 6.3.2.1新建工程
- 6.3.2.2实现网络服务
- 6.3.2.3网页模板渲染
- 6.3.2.4缓存
- 6.3.2.5错误处理
- 6.3.2.6防止程序崩溃
- 6.3.2.7资源分离
- 6.3.2.8重构
- 6.4更多资源
- 第7章进阶话题
- 7.1Go语言中的内存管理
- 7.2反射
- 7.3语言交互性CGO
- 7.4链接符号
- 7.5Goroutine实现机制
- 7.6接口的奥秘
- 第8章开发工具
- 8.1Go语言开发工具
- 8.2gEdit
- 8.3Goclipse-使用Eclipse开发和调试Go程序
- 8.4VIM
- 8.5Nodepad++,Windows上的Go开发环境搭建
- 8.6GolangIDE
- 附录Go语言包参考
过年在老家的时候不能上网,通过文档抽空学了下go语言。后来又买了这本书。总体上这本书是当前的 go语言书中比较不错的一本。但缺点在于对go的并行机制以及内存回收机制这两个非常重要的话题介绍的不够深入。go的并行机制是其最大的亮点go的存在基础,而内存回收机制更是是否能革c和java命的根基。 既然说到了这个书,当然也需要说说对go语言的看法。
Go的确没创造什么新东西,只是他做到了极简。Go是更好的C(或者说是网络时代的C),这点我爱不释手,只要是一个喜欢折腾的人,肯定会更喜欢Go,他更底层。而且学习这个语言实在太快了,这是我认为除了lua,学习成本极低的一门语言,仅仅是语言,毕竟go的平台很年轻,如果拿go跟jvm比较,可以说,一个是幼稚园,一个是大学校园,差距很大,但是go却能带给你极高的开发效率。而且不用浪费太多程序员的心智,这相比java简直是差别太大了,我很多时候在构建框架和理解框架,天天摸爬滚打在java无数的框架和开源类库中,当然不是说go没有这些,只是go应该用c+python的方式去思考,我不想多说了,另开一个文章来写吧。