书籍作者:任洪彩 | ISBN:9787121452963 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:5889 |
创建日期:2024-03-31 | 发布日期:2024-03-31 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书深入地讲解了Go语言常见特性的内部机制和实现方式,大部分内容源自对Go源码的分析,并从中提炼出实现原理。通过阅读本书,读者可以快速、轻松地了解Go语言的内部运作机制。
本书首先介绍常见数据结构及控制结构的实现原理,包括管道、切片、Hash表、select和for-range等,这部分内容大都以几个精心准备的测验题目开头,每个测验题目均对应一个知识点,读者借此可以测验自身对该知识点的掌握程度。接着介绍了Go语言最核心的概念,包括协程的概念、协程调度模型、协程调度策略,以及内存分配和垃圾回收相关的内容。本书还介绍了测试、泛型、依赖管理等比较实用的特性。最后结合笔者的见闻,整理了一些发生在真实项目中的编程陷阱。
任洪彩
华为云原生开源团队成员,CNCF(云原生计算基金会)官方大使,Kubernetes、Karmada等项目的资深维护者。
华为员工培训中心讲师,负责Go语言培训及软件工程能力建设。
在Nokia、华为等公司参与过多个大型项目的研发与重构,对Go、C/C++、Python、Swift等语言均有深入的研究与实践。
作者为华为资深技术专家。
第1版评分9.4分。
本书适合程序员面试。
Go语言是由Google公司开源的一门编程语言,虽然历史只有10余年(2012年发布1.0版本),但在多个领域尤其是云计算领域得到了快速及广泛的使用。相对于C语言这种底层系统语言,Go语言增加了自动垃圾回收、协程、接口等现代语言中常见的高级特性,而相对于Java、Python等应用开发语言,Go语言移除或弱化了类、元编程、Lambda表达式等高级特性。Go语言因此兼备了系统级语言所需要的“轻快灵”,以及应用级语言所需要的“低门槛、高生产力”。Go语言非常适合用于云服务开发、应用服务端开发,以及在通用Linux上的部分嵌入式系统开发。
Go语言的快速发展也离不开开源社区的支持。Go语言自开源起就引发了大量开发者的关注,并且基于Go语言诞生了大批知名的开源项目,其中最引人瞩目的无疑是Kubernetes、Docker,以及托管在CNCF(云原生计算基金会)旗下的大批云原生开源项目。 Go语言也因此被称为“云基础设施语言”,谷歌的Go产品负责人更是称Go语言为“云的语言”。
在笔者所在的华为公司,Go语言被作为公司级的五种指定编程语言之一(其他四种为C、C++、Java、Python),并且在华为云云原生产品研发部门被作为首选编程语言。华为云目前有30多款云服务产品是以Go语言为主力编程语言的,并且基于Go语言制定了公司级的编程规范,以及生产级高可靠、高安全、高性能的可信编程要求。本书内容也源自笔者团队在Kubernetes、Docker等云原生开源社区,以及华为云多款云原生服务产品中的实际生产级经验总结。
第1章 常见数据结构的实现原理
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 实现原理
1.7 sync.Map
1.7.1 热身测验
1.7.2 特性速览
1.7.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.1.4 模糊测试
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 模糊测试的实现原理
7.3.7 Main测试的实现原理
7.3.8 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 快速开始
11.2 泛型总览
11.3 类型约束
11.4 泛型举例
11.4.1 泛型示例:MapKeys
11.4.2 泛型应用举例:Set
11.4.3 泛型应用举例:Sort
11.5 泛型小结
第12章 依赖管理
12.1 GOPATH
12.2 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失效
很好,知识很多,活到老学到老
2023-05-11 12:36:33
送货挺快的,万年Java佬打算进入Go世界,周末翻一遍再过来追评
2023-05-04 17:52:03
very nice
2023-05-05 00:04:26