内容简介 · · · · · ·
《Go专家编程》深入地讲解了Go语言常见特性的内部机制和实现方式,大部分内容源自对Go语言源码的分析,并从中提炼出实现原理。通过阅读本书,读者可以快速、轻松地了解Go语言的内部运作机制。
本书首先介绍Go语言常见的数据结构及控制结构的实现原理,包括管道、切片、Hash表、select和for-range等,这部分内容大都以几个精心准备的测验题目开头,每个测验题目均对应一个知识点,读者可以借此测验自身对该知识点的掌握程度。接着介绍了Go语言最基础的概念,包括协程的概念、协程调度模型、协程调度策略,以及内存分配和垃圾回收相关的内容。本书还介绍了一些标准库、异常处理和依赖管理等非语法相关但非常重要的内容。最后结合作者的见闻,整理了一些发生在真实项目中的编程陷阱。
作者简介 · · · · · ·
任洪彩,华为云原生团队核心成员,开源爱好者,深度参与CNCF(云原生计算基金会)旗下Kubernetes、Prometheus等项目贡献,Kubernetes资深成员,担任Kubernetes SIG-Instrumentation Approver,敏捷软件思想深度实践者,在Nokia、华为等公司参与过多个大型项目的研发与重构,对Go、C/C++、Python、Swift等语言均有深入的研究与实践。
目录 · · · · · ·
1.1 管道
1.1.1 热身测验
1.1.2 特性速览
1.1.3 实现原理
1.2 slice
1.2.1 热身测验
1.2.2 特性速览
1.2.3 实现原理
1.2.4 切片表达式
1.3 map
1.3.1 热身测验
1.3.2 特性速览
1.3.3 实现原理
1.4 struct
1.4.1 热身测验
1.4.2 内嵌字段
1.4.3 方法受体
1.4.4 字段标签
1.5 iota
1.5.1 热身测验
1.5.2 特性速览
1.5.3 实现原理
1.6 string
1.6.1 热身测验
1.6.2 特性速览
1.6.3 实现原理
第2章 控制结构
2.1 select
2.1.1 热身测验
2.1.2 特性速览
2.1.3 实现原理
2.2 for-range
2.2.1 热身测验
2.2.2 特性速览
2.2.3 实现原理
第3章 协程
3.1 协程的概念
3.2 调度模型
3.3 调度策略
第4章 内存管理
4.1 内存分配
4.2 垃圾回收
4.3 逃逸分析
第5章 并发控制
5.1 channel
5.2 WaitGroup
5.3 context
5.4 Mutex
5.5 RWMutex
5.5.1 读写锁的数据结构
5.5.2 场景分析
第6章 反射
6.1 热身测验
6.2 接口
6.3 反射定律
第7章 测试
7.1 快速开始
7.1.1 单元测试
7.1.2 基准测试
7.1.3 示例测试
7.2 进阶测试
7.2.1 子测试
7.2.2 Main测试
7.3 实现原理
7.3.1 testing.common
7.3.2 testing.TB接口
7.3.3 单元测试的实现原理
7.3.4 性能测试的实现原理
7.3.5 示例测试的实现原理
7.3.6 Main测试的实现原理
7.3.7 go test的工作机制
7.4 扩展阅读
7.4.1 测试参数
7.4.2 benchstat
第8章 异常处理
8.1 error
8.1.1 热身测验
8.1.2 基础error
8.1.3 链式error
8.1.4 工程迁移
8.2 defer
8.2.1 热身测验
8.2.2 约法三章
8.2.3 实现原理
8.2.4 性能优化
8.3 panic
8.3.1 热身测验
8.3.2 工作机制
8.3.3 源码剖析
8.4 recover
8.4.1 热身测验
8.4.2 工作机制
8.4.3 源码剖析
第9章 定时器
9.1 一次性定时器(Timer)
9.1.1 快速开始
9.1.2 实现原理
9.2 周期性定时器(Ticker)
9.2.1 快速开始
9.2.2 实现原理
9.3 runtimeTimer
9.3.1 实现原理
9.3.2 性能优化
9.4 案例分享
第10章 语法糖
10.1 简短变量声明符
10.1.1 热身测验
10.1.2 规则
10.2 可变参函数
第11章 版本管理
11.1 安装Go
11.2 删除Go
11.3 升级Go
11.4 Go版本管理器
11.4.1 快速开始
11.4.2 工作机制
11.4.3 小结
11.5 源码编译
11.5.1 源码下载
11.5.2 源码编译过程
第12章 Go语言依赖管理
12.1 GOPATH
12.1.1 GOROOT是什么
12.1.2 GOPATH是什么
12.1.3 依赖查找
12.1.4 GOPATH的缺点
12.2 vendor
12.2.1 vendor目录位置
12.2.2 搜索顺序
12.2.3 vendor的不足
12.3 Go Module
12.3.1 Go Module基础
12.3.2 快速实践
12.3.3 replace指令
12.3.4 exclude指令
12.3.5 indirect指令
12.3.6 版本选择机制
12.3.7 incompatible
12.3.8 伪版本
12.3.9 依赖包存储
12.3.10 go.sum
12.3.11 模块代理
12.3.12 GOSUMDB的工作机制
12.3.13 GOSUMDB的实现原理
12.3.14 第三方代理
12.3.15 私有模块
12.3.16 Go Module的演进
第13章 编程陷阱
13.1 切片扩容
13.2 空切片
13.3 append的本质
13.4 循环变量引用
13.5 协程引用循环变量
13.6 recover失效
· · · · · · (收起)
喜欢读"Go专家编程"的人也喜欢的电子书 · · · · · ·
喜欢读"Go专家编程"的人也喜欢 · · · · · ·
Go专家编程的话题 · · · · · · ( 全部 条 )



Go专家编程的书评 · · · · · · ( 全部 2 条 )

很用心的Go语言进阶读物
> 更多书评 2篇
读书笔记 · · · · · ·
我来写笔记-
掌握一门语言的最好方式就是在工作中使用它。 如果工作中没有合适的项目和场景,那么至少可以拿它来刷 leetcode 和 面试题 如果刷题的时候发现,怎么每道题都跟自己想的不一样,那么我推荐你看这本书。 读完再用下边的题目检验一下,岂不美哉~ 以下记录全书看完以后,重做书上的热身题又做错的那些,说明自己没有完全理解,需要以后重点关注 【20211108 19 / 387】 p14 题目二(全书第5题) p14 题目三(全书第6题)参考[h...
2021-11-14 23:08:09
掌握一门语言的最好方式就是在工作中使用它。
如果工作中没有合适的项目和场景,那么至少可以拿它来刷 leetcode 和 面试题
如果刷题的时候发现,怎么每道题都跟自己想的不一样,那么我推荐你看这本书。
读完再用下边的题目检验一下,岂不美哉~
二维码内容是百度网盘地址以下记录全书看完以后,重做书上的热身题又做错的那些,说明自己没有完全理解,需要以后重点关注
【20211108 19 / 387】
p14 题目二(全书第5题)
p14 题目三(全书第6题)参考https://github.com/RainbowMango/GoExpertProgramming/issues/88
【20211109 25 / 387】
门儿清
【20211110 75 / 387】
p38 题目三(全书第12题)json.Unmarshal 会进行字段赋值而不是整个替换,c选项 f 的color 会保留
p48 题目二(全书第17题)string 只能为空,不会为nil
p49 题目三(全书第18题)string 不能修改,转byet[] 会发生内存拷贝,该拷贝编译器有优化
p74题目一 (全书第25题)
p74题目三 (全书第27题)range 访问nil chan 会永久阻塞,跟直接访问行为一样
三、四、五 这三章没有题目,全是干货
【20211111 100 / 387】
第七章好长~~~~~~~~~~~~~~~~~~~~~
门儿清
【20211112 154 / 387】
门儿清
【20211113 260 / 387】
门儿清
【20211114 387 / 387】
门儿清
全书总共59道热身题/小测验~
这本书,重要的部分真的是深入浅出,恰到好处,相当痛快
不太重要(没有题目)的部分,比如testing 和包管理,看困了。。。
《the go programing language》 固然好,读完总觉得的欠缺了点什么,实际上手使用go 的时候,发现有些东西书里确实没有讲到
缺的东西,在这本书里都补回来了,实在是难得的好书。评分这么高,实至名归~~
回应 2021-11-14 23:08:09
-
掌握一门语言的最好方式就是在工作中使用它。 如果工作中没有合适的项目和场景,那么至少可以拿它来刷 leetcode 和 面试题 如果刷题的时候发现,怎么每道题都跟自己想的不一样,那么我推荐你看这本书。 读完再用下边的题目检验一下,岂不美哉~ 以下记录全书看完以后,重做书上的热身题又做错的那些,说明自己没有完全理解,需要以后重点关注 【20211108 19 / 387】 p14 题目二(全书第5题) p14 题目三(全书第6题)参考[h...
2021-11-14 23:08:09
掌握一门语言的最好方式就是在工作中使用它。
如果工作中没有合适的项目和场景,那么至少可以拿它来刷 leetcode 和 面试题
如果刷题的时候发现,怎么每道题都跟自己想的不一样,那么我推荐你看这本书。
读完再用下边的题目检验一下,岂不美哉~
二维码内容是百度网盘地址以下记录全书看完以后,重做书上的热身题又做错的那些,说明自己没有完全理解,需要以后重点关注
【20211108 19 / 387】
p14 题目二(全书第5题)
p14 题目三(全书第6题)参考https://github.com/RainbowMango/GoExpertProgramming/issues/88
【20211109 25 / 387】
门儿清
【20211110 75 / 387】
p38 题目三(全书第12题)json.Unmarshal 会进行字段赋值而不是整个替换,c选项 f 的color 会保留
p48 题目二(全书第17题)string 只能为空,不会为nil
p49 题目三(全书第18题)string 不能修改,转byet[] 会发生内存拷贝,该拷贝编译器有优化
p74题目一 (全书第25题)
p74题目三 (全书第27题)range 访问nil chan 会永久阻塞,跟直接访问行为一样
三、四、五 这三章没有题目,全是干货
【20211111 100 / 387】
第七章好长~~~~~~~~~~~~~~~~~~~~~
门儿清
【20211112 154 / 387】
门儿清
【20211113 260 / 387】
门儿清
【20211114 387 / 387】
门儿清
全书总共59道热身题/小测验~
这本书,重要的部分真的是深入浅出,恰到好处,相当痛快
不太重要(没有题目)的部分,比如testing 和包管理,看困了。。。
《the go programing language》 固然好,读完总觉得的欠缺了点什么,实际上手使用go 的时候,发现有些东西书里确实没有讲到
缺的东西,在这本书里都补回来了,实在是难得的好书。评分这么高,实至名归~~
回应 2021-11-14 23:08:09
-
掌握一门语言的最好方式就是在工作中使用它。 如果工作中没有合适的项目和场景,那么至少可以拿它来刷 leetcode 和 面试题 如果刷题的时候发现,怎么每道题都跟自己想的不一样,那么我推荐你看这本书。 读完再用下边的题目检验一下,岂不美哉~ 以下记录全书看完以后,重做书上的热身题又做错的那些,说明自己没有完全理解,需要以后重点关注 【20211108 19 / 387】 p14 题目二(全书第5题) p14 题目三(全书第6题)参考[h...
2021-11-14 23:08:09
掌握一门语言的最好方式就是在工作中使用它。
如果工作中没有合适的项目和场景,那么至少可以拿它来刷 leetcode 和 面试题
如果刷题的时候发现,怎么每道题都跟自己想的不一样,那么我推荐你看这本书。
读完再用下边的题目检验一下,岂不美哉~
二维码内容是百度网盘地址以下记录全书看完以后,重做书上的热身题又做错的那些,说明自己没有完全理解,需要以后重点关注
【20211108 19 / 387】
p14 题目二(全书第5题)
p14 题目三(全书第6题)参考https://github.com/RainbowMango/GoExpertProgramming/issues/88
【20211109 25 / 387】
门儿清
【20211110 75 / 387】
p38 题目三(全书第12题)json.Unmarshal 会进行字段赋值而不是整个替换,c选项 f 的color 会保留
p48 题目二(全书第17题)string 只能为空,不会为nil
p49 题目三(全书第18题)string 不能修改,转byet[] 会发生内存拷贝,该拷贝编译器有优化
p74题目一 (全书第25题)
p74题目三 (全书第27题)range 访问nil chan 会永久阻塞,跟直接访问行为一样
三、四、五 这三章没有题目,全是干货
【20211111 100 / 387】
第七章好长~~~~~~~~~~~~~~~~~~~~~
门儿清
【20211112 154 / 387】
门儿清
【20211113 260 / 387】
门儿清
【20211114 387 / 387】
门儿清
全书总共59道热身题/小测验~
这本书,重要的部分真的是深入浅出,恰到好处,相当痛快
不太重要(没有题目)的部分,比如testing 和包管理,看困了。。。
《the go programing language》 固然好,读完总觉得的欠缺了点什么,实际上手使用go 的时候,发现有些东西书里确实没有讲到
缺的东西,在这本书里都补回来了,实在是难得的好书。评分这么高,实至名归~~
回应 2021-11-14 23:08:09
论坛 · · · · · ·
对于map的讲解有很多错误 | 来自寒江陪烟火 | 1 回应 | 2022-03-30 23:35:49 |
力荐!好书!! | 来自志气 | 2021-04-27 13:26:14 |
当前版本有售 · · · · · ·
-
限时抢
以下书单推荐 · · · · · · ( 全部 )
- 豆瓣高分书籍是否名实相符 (无心恋战)
- Go (谢小漫)
- 技术书籍 (啊盼)
- 计算机 (礼空王)
- CS & SE (xrzkvvv_)
谁读这本书?
二手市场
订阅关于Go专家编程的评论:
feed: rss 2.0
1 有用 beautifularea 2021-05-06 06:07:37
通透
1 有用 虾卤 2021-11-27 22:35:34
这本书讲的内容都是go语言较核心的高阶内容,以前这些内容只能零散的在博客上看到,很高兴有一本书将它们汇总起来。同时内容深浅适中,适合需要对go做深入了解的开发,或准备面试的同学阅读。
2 有用 大白话人生 2021-10-22 18:52:25
入门挺好的
7 有用 金毛 2020-12-04 18:16:48
要是面试之前看到这本书,怎会沦落到现在这个伤心的地步
0 有用 鱼香唐僧 2022-05-16 09:07:39
入门后的进阶书,全书结构非常的清晰
0 有用 鱼香唐僧 2022-05-16 09:07:39
入门后的进阶书,全书结构非常的清晰
0 有用 双蛋皮卡丘 2022-05-15 15:15:04
最好的golang进阶书
0 有用 irwin 2022-05-08 18:41:33
四星
0 有用 颜道江 2022-04-20 22:02:16
虽叫"Go专家编程"但是并不是面向专家的,适合初学者上手Go语言之后系统加深对Go语言的认识。另外,我比较喜欢热身测验这个板块,能够快速检验是否掌握这块的知识,一些代表性的小题目也能快速检验自己对这块内容是否是一知半解。
0 有用 udnce 2022-03-21 09:30:10
不错,需要了解基础语言后再看,对提升go能力有帮助。