新書推薦:
《
唐宋绘画史 全彩插图版
》
售價:HK$
101.2
《
“御容”与真相:近代中国视觉文化转型(1840-1920)
》
售價:HK$
113.9
《
鸣沙丛书·大风起兮:地方视野和政治变迁中的“五四”(1911~1927)
》
售價:HK$
102.4
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:HK$
109.3
《
铝合金先进成型技术
》
售價:HK$
273.7
《
英雄之旅:把人生活成一个好故事
》
售價:HK$
89.7
《
分析性一体的涌现:进入精神分析的核心
》
售價:HK$
125.4
《
火枪与账簿:早期经济全球化时代的中国与东亚世界
》
售價:HK$
79.4
|
內容簡介: |
本书深入地讲解了Go语言常见特性的内部机制和实现方式,大部分内容源自对Go源码的分析,并从中提炼出实现原理。通过阅读本书,读者可以快速、轻松地了解Go语言的内部运作机制。本书首先介绍常见数据结构及控制结构的实现原理,包括管道、切片、Hash表、select和for-range等,这部分内容大都以几个精心准备的测验题目开头,每个测验题目均对应一个知识点,读者借此可以测验自身对该知识点的掌握程度。接着介绍了Go语言最核心的概念,包括协程的概念、协程调度模型、协程调度策略,以及内存分配和垃圾回收相关的内容。本书还介绍了测试、泛型、依赖管理等比较实用的特性。最后结合笔者的见闻,整理了一些发生在真实项目中的编程陷阱。
|
關於作者: |
任洪彩华为云原生开源团队成员,CNCF(云原生计算基金会)官方大使,Kubernetes、Karmada等项目的资深维护者。华为员工培训中心讲师,负责Go语言培训及软件工程能力建设。在Nokia、华为等公司参与过多个大型项目的研发与重构,对Go、C/C++、Python、Swift等语言均有深入的研究与实践。
|
目錄:
|
第1章 常见数据结构的实现原理1.1 管道1.1.1 热身测验1.1.2 特性速览1.1.3 实现原理1.2 slice1.2.1 热身测验1.2.2 特性速览1.2.3 实现原理1.2.4 切片表达式1.3 map1.3.1 热身测验1.3.2 特性速览1.3.3 实现原理1.4 struct1.4.1 热身测验1.4.2 内嵌字段1.4.3 方法受体1.4.4 字段标签1.5 iota1.5.1 热身测验1.5.2 特性速览1.5.3 实现原理1.6 string1.6.1 热身测验1.6.2 特性速览1.6.3 实现原理1.7 sync.Map1.7.1 热身测验1.7.2 特性速览1.7.3 实现原理第2章 控制结构2.1 select2.1.1 热身测验2.1.2 特性速览2.1.3 实现原理2.2 for-range2.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 Channel5.2 WaitGroup5.3 Context5.4 mutex5.5 RWMutex5.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.1.4 模糊测试7.2 进阶测试7.2.1 子测试7.2.2 Main测试7.3 实现原理7.3.1 testing.common7.3.2 testing.TB接口7.3.3 单元测试的实现原理7.3.4 性能测试的实现原理7.3.5 示例测试的实现原理7.3.6 模糊测试的实现原理7.3.7 Main测试的实现原理7.3.8 go test的工作机制7.4 扩展阅读7.4.1 测试参数7.4.2 benchstat第8章 异常处理8.1 error8.1.1 热身测验8.1.2 基础error8.1.3 链式error8.1.4 工程迁移8.2 defer8.2.1 热身测验8.2.2 约法三章8.2.3 实现原理8.2.4 性能优化8.3 panic8.3.1 热身测验8.3.2 工作机制8.3.3 源码剖析8.4 recover8.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 runtimeTimer9.3.1 实现原理9.3.2 性能优化9.4 案例分享第10章 语法糖10.1 简短变量声明符10.1.1 热身测验10.1.2 规则10.2 可变参函数第11章 泛型11.1 快速开始11.2 泛型总览11.3 类型约束11.4 泛型举例11.4.1 泛型示例:MapKeys11.4.2 泛型应用举例:Set11.4.3 泛型应用举例:Sort11.5 泛型小结第12章 依赖管理12.1 GOPATH12.2 vendor12.3 Go Module12.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 incompatible12.3.8 伪版本12.3.9 依赖包存储12.3.10 go.sum12.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失效
|
|