内容简介 · · · · · ·
本书基于在读者之间广为传阅的同名开源电子书《Go语言设计与实现》,是难得一见的Go语言进阶图书。
书中结合近200幅生动的全彩图片,配上详尽的文字剖析与精选源代码段,为读者奉上了异彩纷呈、系统完善的Go语言解读。本书内容分为9章:调试源代码、编译原理、数据结构、语言特性、常用关键字、并发编程、内存管理、元编程和标准库,几乎涵盖了Go语言从编译到运行的方方面面。书中的代码片段基于Go 1.15。通过阅读本书,读者不仅能够深入理解Go语言的实现细节,而且可以深刻认识设计背后的原理,同时提升阅读源代码的技能。
本书特色
1.前所未有的学习方式,近200幅精美全彩技术配图,600多段精选源代码段,淋漓尽致的文字剖析,带你以前所未有的方式读懂Go源码,掌握Go底层原理
2.强大的读者口碑,本书基于“面向信仰编程”博客作者@Draven的开源电子书《Go语言设计...
本书基于在读者之间广为传阅的同名开源电子书《Go语言设计与实现》,是难得一见的Go语言进阶图书。
书中结合近200幅生动的全彩图片,配上详尽的文字剖析与精选源代码段,为读者奉上了异彩纷呈、系统完善的Go语言解读。本书内容分为9章:调试源代码、编译原理、数据结构、语言特性、常用关键字、并发编程、内存管理、元编程和标准库,几乎涵盖了Go语言从编译到运行的方方面面。书中的代码片段基于Go 1.15。通过阅读本书,读者不仅能够深入理解Go语言的实现细节,而且可以深刻认识设计背后的原理,同时提升阅读源代码的技能。
本书特色
1.前所未有的学习方式,近200幅精美全彩技术配图,600多段精选源代码段,淋漓尽致的文字剖析,带你以前所未有的方式读懂Go源码,掌握Go底层原理
2.强大的读者口碑,本书基于“面向信仰编程”博客作者@Draven的开源电子书《Go语言设计与实现》,有30万读者追更,全网阅读量超100万次
3.极致的阅读体验,全彩印刷、精美排版、封面选用特种纸、内文采用80g胶版纸
4.专业人士推荐,谢孟军、毛剑、万俊峰Kevin、张磊、无闻等业内人士力荐,大量读者热荐
作者简介 · · · · · ·
左书祺(@Draven)
Kubernetes贡献者、前调度器项目组成员、云计算和资源调度技术专家。“面向信仰编程”博客作者,开源电子书《Go语言设计与实现》作者,公众号“真没什么逻辑”主理人。长期维护开源项目。
《Go语言设计与实现》有30多万读者追更,全网阅读量已经超过100万。
目录 · · · · · ·
第 1章 调试源代码
1.1 Go语言源代码
1.2 编译源代码
1.3 中间代码
1.4 小结
第 2章 编译原理
2.1 编译过程
2.1.1 预备知识
2.1.2 编译四阶段
2.1.3 编译器入口
2.1.4 小结
2.1.5 延伸阅读
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.1 概述
2.4.2 配置初始化
2.4.3 遍历和替换
2.4.4 SSA生成
2.4.5 小结
2.5 机器码生成
2.5.1 指令集架构
2.5.2 机器码生成
2.5.3 小结
2.5.4 延伸阅读
第3章 数据结构
3.1 数组
3.1.1 概述
3.1.2 初始化
3.1.3 访问和赋值
3.1.4 小结
3.1.5 延伸阅读
3.2 切片
3.2.1 数据结构
3.2.2 初始化
3.2.3 访问元素
3.2.4 追加和扩容
3.2.5 复制切片
3.2.6 小结
3.2.7 延伸阅读
3.3 哈希表
3.3.1 设计原理
3.3.2 数据结构
3.3.3 初始化
3.3.4 读写操作
3.3.5 小结
3.3.6 延伸阅读
3.4 字符串
3.4.1 数据结构
3.4.2 解析过程
3.4.3 拼接
3.4.4 类型转换
3.4.5 小结
3.4.6 延伸阅读
第4章 语言特性
4.1 函数调用
4.1.1 调用惯例
4.1.2 参数传递
4.1.3 小结
4.1.4 延伸阅读
4.2 接口
4.2.1 概述
4.2.2 数据结构
4.2.3 类型转换
4.2.4 类型断言
4.2.5 动态派发
4.2.6 小结
4.2.7 延伸阅读
4.3 反射
4.3.1 三大法则
4.3.2 类型和值
4.3.3 更新变量
4.3.4 实现协议
4.3.5 方法调用
4.3.6 小结
4.3.7 延伸阅读
第5章 常用关键字
5.1 for和range
5.1.1 现象
5.1.2 经典循环
5.1.3 范围循环
5.1.4 小结
5.2 select
5.2.1 现象
5.2.2 数据结构
5.2.3 实现原理
5.2.4 小结
5.2.5 延伸阅读
5.3 defer
5.3.1 现象
5.3.2 数据结构
5.3.3 执行机制
5.3.4 堆中分配
5.3.5 栈上分配
5.3.6 开放编码
5.3.7 小结
5.3.8 延伸阅读
5.4 panic和recover
5.4.1 现象
5.4.2 数据结构
5.4.3 程序崩溃
5.4.4 崩溃恢复
5.4.5 小结
5.4.6 延伸阅读
5.5 make和new
5.5.1 make
5.5.2 new
5.5.3 小结
第6章 并发编程
6.1 上下文
6.1.1 设计原理
6.1.2 默认上下文
6.1.3 取消信号
6.1.4 传值方法
6.1.5 小结
6.1.6 延伸阅读
6.2 同步原语与锁
6.2.1 基本原语
6.2.2 扩展原语
6.2.3 小结
6.2.4 延伸阅读
6.3 计时器
6.3.1 设计原理
6.3.2 数据结构
6.3.3 状态机
6.3.4 触发计时器
6.3.5 小结
6.3.6 延伸阅读
6.3.7 历史变更
6.4 Channel
6.4.1 设计原理
6.4.2 数据结构
6.4.3 创建Channel
6.4.4 发送数据
6.4.5 接收数据
6.4.6 关闭Channel
6.4.7 小结
6.4.8 延伸阅读
6.5 调度器
6.5.1 设计原理
6.5.2 数据结构
6.5.3 调度器启动
6.5.4 创建Goroutine
6.5.5 调度循环
6.5.6 触发调度
6.5.7 线程管理
6.5.8 小结
6.5.9 延伸阅读
6.6 网络轮询器
6.6.1 设计原理
6.6.2 数据结构
6.6.3 多路复用
6.6.4 小结
6.6.5 延伸阅读
6.7 系统监控
6.7.1 设计原理
6.7.2 监控循环
6.7.3 小结
第7章 内存管理
7.1 内存分配器
7.1.1 设计原理
7.1.2 内存管理组件
7.1.3 内存分配
7.1.4 小结
7.1.5 延伸阅读
7.1.6 历史变更
7.2 垃圾收集器
7.2.1 设计原理
7.2.2 演进过程
7.2.3 实现原理
7.2.4 小结
7.2.5 延伸阅读
7.3 栈空间管理
7.3.1 设计原理
7.3.2 栈操作
7.3.3 小结
7.3.4 延伸阅读
第8章 元编程
8.1 插件系统
8.1.1 设计原理
8.1.2 动态库
8.1.3 小结
8.1.4 延伸阅读
8.2 代码生成
8.2.1 设计原理
8.2.2 代码生成
8.2.3 小结
第9章 标准库
9.1 JSON
9.1.1 设计原理
9.1.2 序列化
9.1.3 反序列化
9.1.4 小结
9.2 HTTP
9.2.1 设计原理
9.2.2 客户端
9.2.3 服务端
9.2.4 小结
9.3 数据库
9.3.1 设计原理
9.3.2 驱动接口
9.3.3 小结
· · · · · · (收起)
丛书信息
· · · · · ·
喜欢读"Go语言设计与实现"的人也喜欢的电子书 · · · · · ·
喜欢读"Go语言设计与实现"的人也喜欢 · · · · · ·
- Lua设计与实现 8.1
- Go专家编程 9.1
- 用Go语言自制编译器 8.9
- Go程序设计语言 8.8
- Go Web 编程 8.0
- 图论算法理论、实现及应用 8.6
- 深入剖析Kubernetes 9.4
- ACM国际大学生程序设计竞赛 9.1
- 编译器设计 8.4
- 算法新解 8.6
Go语言设计与实现的书评 · · · · · · ( 全部 2 条 )
> 更多书评 2篇
论坛 · · · · · ·
在这本书的论坛里发言以下书单推荐 · · · · · · ( 全部 )
- 评分可能虚高书籍(一) (无心恋战)
- Golang (Steven🇺🇦)
- 编程语言大观 (𝕾𝖚𝖓)
- 服务开发 (Evan.C)
- 计算机 (dk易)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有695人想读,手里有一本闲着?
订阅关于Go语言设计与实现的评论:
feed: rss 2.0
2 有用 Sonia 2022-10-23 17:41:25 浙江
想看 map 的扩容过程,从 map 数据结构开始看,看得一脸懵逼。简单来说很多地方都是直接贴代码,然后就描述一下过程,也没有为什么也没有解释。。那我为什不直接去啃源码? eg,算出来 hash 以后理论来说得算在哪个 bucket 了吧,不解释怎么算,直接来了一句用最后几位决定的,那鬼才知道这到底是后多少位,怎么决定的?还有后面扩容分流,为什么容量翻倍的时候每个旧桶元素都要分流到两个桶里,一句话... 想看 map 的扩容过程,从 map 数据结构开始看,看得一脸懵逼。简单来说很多地方都是直接贴代码,然后就描述一下过程,也没有为什么也没有解释。。那我为什不直接去啃源码? eg,算出来 hash 以后理论来说得算在哪个 bucket 了吧,不解释怎么算,直接来了一句用最后几位决定的,那鬼才知道这到底是后多少位,怎么决定的?还有后面扩容分流,为什么容量翻倍的时候每个旧桶元素都要分流到两个桶里,一句话都没有 (展开)
13 有用 葱爆羊肉 2021-12-07 13:50:59
上半年仔细读了博客上的这本电子书,实体书翻了下好像差别不大,全彩印刷像在读教科书。对博客上的电子书:不错不错,有的地方不够清晰,配合go under the hood 看完的,两者看完还不清楚的地方看雨痕的go语言学习笔记,发现雨痕的那本之前看不懂,现在看是三本里讲得最清楚的
27 有用 贝壳街的亡灵 2022-01-10 03:49:54
再再再再一次证明了程序员大概率是垃圾的作者,拜托所有类似的自以为有能力讲清楚一件事的“作者”:放下你的ego,说点人话,不丢人。你小时候学说话,你爹妈是从abcd开始教的,没有让你上来就读三国志吧?现在到你教读者知识了,你就不记得你当初怎么学的了?装什么蒜啊
6 有用 王悟空 2022-02-08 20:36:46
虽然能预料到自己将来会读很多遍这本书,但是确实无法对标周志明大佬的书
1 有用 heisen 2022-01-19 23:38:40
讲解go并发和内存分配gc的部分讲的非常深入了,也给出了相应的参考来读,但个人觉得可读性还是需要提高,代码和文字安排的让人很难读懂设计的思路和原理
0 有用 豆友208603762 2025-01-01 23:28:01 天津
语言组织 排版 什么的 感觉很乱 对于菜鸟非常不友好,有时不如看源码来的快
0 有用 冰箱里的泡沫 2024-11-10 01:05:55 北京
前半部分非常好 整体非常推荐
0 有用 最难不过二叉树 2024-08-30 14:07:45 广东
深度可以
0 有用 呵呵大虾 2024-06-16 20:58:22 北京
前半部分读起来挺有收获,感觉能够应用到实际中
0 有用 不会飞的章鱼 2024-02-20 15:45:40 四川
深入源码层面去学习Go相关知识,收货很大。