Go语言设计与实现

Go语言设计与实现
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: (@Draven)
2021-11
版次: 1
ISBN: 9787115576613
定价: 139.80
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 420页
字数: 620千字
70人买过
  • 本书基于在读者之间广为传阅的同名开源电子书《Go语言设计与实现》,是难得一见的Go语言进阶图书。
      书中结合近200幅生动的全彩图片,配上详尽的文字剖析与精选源代码段,为读者奉上了异彩纷呈、系统完善的Go语言解读。本书内容分为9章:调试源代码、编译原理、数据结构、语言特性、常用关键字、并发编程、内存管理、元编程和标准库,几乎涵盖了Go语言从编译到运行的方方面面。书中的代码片段基于Go 1.15。通过阅读本书,读者不仅能够深入理解Go语言的实现细节,而且可以深刻认识设计背后的原理,同时提升阅读源代码的技能。 左书祺(@Draven)

    Kubernetes贡献者、前调度器项目组成员、云计算和资源调度架构师。“面向信仰编程”博客作者,开源电子书《Go语言设计与实现》作者,“真没什么逻辑”主理人。长期维护开源项目。

    《Go语言设计与实现》有30多万读者追更,全网阅读量已经超过100万。 前言    iii

    第 1章 调试源代码 1

    1.1 Go语言源代码 1

    1.2 编译源代码 2

    1.3 中间代码 3

    1.4 小结 4

    第 2章 编译原理 5

    2.1 编译过程 5

    2.1.1 预备知识 5

    2.1.2 编译四阶段 7

    2.1.3 编译器入口 10

    2.1.4 小结 11

    2.1.5 延伸阅读 12

    2.2 词法分析和语法分析 12

    2.2.1 词法分析 12

    2.2.2 语法分析 17

    2.2.3 小结 26

    2.2.4 延伸阅读 26

    2.3 类型检查 26

    2.3.1 强弱类型 26

    2.3.2 静态类型与动态类型 27

    2.3.3 执行过程 28

    2.3.4 小结 34

    2.4 中间代码生成 34

    2.4.1 概述 34

    2.4.2 配置初始化 35

    2.4.3 遍历和替换 37

    2.4.4 SSA生成 40

    2.4.5 小结 44

    2.5 机器码生成 44

    2.5.1 指令集架构 44

    2.5.2 机器码生成 45

    2.5.3 小结 49

    2.5.4 延伸阅读 50

    第3章 数据结构 51

    3.1 数组 51

    3.1.1 概述 51

    3.1.2 初始化 52

    3.1.3 访问和赋值 55

    3.1.4 小结 57

    3.1.5 延伸阅读 58

    3.2 切片 58

    3.2.1 数据结构 58

    3.2.2 初始化 59

    3.2.3 访问元素 63

    3.2.4 追加和扩容 64

    3.2.5 复制切片 67

    3.2.6 小结 68

    3.2.7 延伸阅读 68

    3.3 哈希表 68

    3.3.1 设计原理 69

    3.3.2 数据结构 72

    3.3.3 初始化 74

    3.3.4 读写操作 77

    3.3.5 小结 88

    3.3.6 延伸阅读 88

    3.4 字符串 88

    3.4.1 数据结构 89

    3.4.2 解析过程 89

    3.4.3 拼接 91

    3.4.4 类型转换 93

    3.4.5 小结 95

    3.4.6 延伸阅读 95

    第4章 语言特性 96

    4.1 函数调用 96

    4.1.1 调用惯例 96

    4.1.2 参数传递 101

    4.1.3 小结 104

    4.1.4 延伸阅读 104

    4.2 接口 105

    4.2.1 概述 105

    4.2.2 数据结构 111

    4.2.3 类型转换 113

    4.2.4 类型断言 116

    4.2.5 动态派发 118

    4.2.6 小结 122

    4.2.7 延伸阅读 122

    4.3 反射 123

    4.3.1 三大法则 124

    4.3.2 类型和值 127

    4.3.3 更新变量 129

    4.3.4 实现协议 130

    4.3.5 方法调用 132

    4.3.6 小结 135

    4.3.7 延伸阅读 135

    第5章 常用关键字 136

    5.1 for和range 136

    5.1.1 现象 137

    5.1.2 经典循环 140

    5.1.3 范围循环 141

    5.1.4 小结 147

    5.2 select 148

    5.2.1 现象 148

    5.2.2 数据结构 151

    5.2.3 实现原理 151

    5.2.4 小结 160

    5.2.5 延伸阅读 161

    5.3 defer 161

    5.3.1 现象 161

    5.3.2 数据结构 163

    5.3.3 执行机制 164

    5.3.4 堆中分配 164

    5.3.5 栈上分配 168

    5.3.6 开放编码 169

    5.3.7 小结 173

    5.3.8 延伸阅读 174

    5.4 panic和recover 174

    5.4.1 现象 175

    5.4.2 数据结构 177

    5.4.3 程序崩溃 178

    5.4.4 崩溃恢复 179

    5.4.5 小结 181

    5.4.6 延伸阅读 181

    5.5 make和new 181

    5.5.1 make 182

    5.5.2 new 183

    5.5.3 小结 184

    第6章 并发编程 185

    6.1 上下文 185

    6.1.1 设计原理 186

    6.1.2 默认上下文 187

    6.1.3 取消信号 188

    6.1.4 传值方法 192

    6.1.5 小结 192

    6.1.6 延伸阅读 192

    6.2 同步原语与锁 193

    6.2.1 基本原语 193

    6.2.2 扩展原语 209

    6.2.3 小结 218

    6.2.4 延伸阅读 218

    6.3 计时器 219

    6.3.1 设计原理 219

    6.3.2 数据结构 222

    6.3.3 状态机 223

    6.3.4 触发计时器 229

    6.3.5 小结 231

    6.3.6 延伸阅读 232

    6.3.7 历史变更 232

    6.4 Channel 232

    6.4.1 设计原理 232

    6.4.2 数据结构 234

    6.4.3 创建Channel 235

    6.4.4 发送数据 237

    6.4.5 接收数据 240

    6.4.6 关闭Channel 245

    6.4.7 小结 246

    6.4.8 延伸阅读 246

    6.5 调度器 246

    6.5.1 设计原理 247

    6.5.2 数据结构 255

    6.5.3 调度器启动 260

    6.5.4 创建Goroutine 261

    6.5.5 调度循环 266

    6.5.6 触发调度 269

    6.5.7 线程管理 274

    6.5.8 小结 276

    6.5.9 延伸阅读 276

    6.6 网络轮询器 276

    6.6.1 设计原理 276

    6.6.2 数据结构 280

    6.6.3 多路复用 281

    6.6.4 小结 288

    6.6.5 延伸阅读 289

    6.7 系统监控 289

    6.7.1 设计原理 289

    6.7.2 监控循环 289

    6.7.3 小结 296

    第7章 内存管理 297

    7.1 内存分配器 297

    7.1.1 设计原理 297

    7.1.2 内存管理组件 304

    7.1.3 内存分配 317

    7.1.4 小结 322

    7.1.5 延伸阅读 322

    7.1.6 历史变更 322

    7.2 垃圾收集器 323

    7.2.1 设计原理 323

    7.2.2 演进过程 331

    7.2.3 实现原理 334

    7.2.4 小结 358

    7.2.5 延伸阅读 358

    7.3 栈空间管理 358

    7.3.1 设计原理 359

    7.3.2 栈操作 363

    7.3.3 小结 369

    7.3.4 延伸阅读 370

    第8章 元编程 371

    8.1 插件系统 371

    8.1.1 设计原理 371

    8.1.2 动态库 373

    8.1.3 小结 376

    8.1.4 延伸阅读 376

    8.2 代码生成 377

    8.2.1 设计原理 377

    8.2.2 代码生成 377

    8.2.3 小结 382

    第9章 标准库 383

    9.1 JSON 383

    9.1.1 设计原理 383

    9.1.2 序列化 385

    9.1.3 反序列化 389

    9.1.4 小结 392

    9.2 HTTP 392

    9.2.1 设计原理 393

    9.2.2 客户端 395

    9.2.3 服务端 402

    9.2.4 小结 406

    9.3 数据库 406

    9.3.1 设计原理 406

    9.3.2 驱动接口 407

    9.3.3 小结 410
  • 内容简介:
    本书基于在读者之间广为传阅的同名开源电子书《Go语言设计与实现》,是难得一见的Go语言进阶图书。
      书中结合近200幅生动的全彩图片,配上详尽的文字剖析与精选源代码段,为读者奉上了异彩纷呈、系统完善的Go语言解读。本书内容分为9章:调试源代码、编译原理、数据结构、语言特性、常用关键字、并发编程、内存管理、元编程和标准库,几乎涵盖了Go语言从编译到运行的方方面面。书中的代码片段基于Go 1.15。通过阅读本书,读者不仅能够深入理解Go语言的实现细节,而且可以深刻认识设计背后的原理,同时提升阅读源代码的技能。
  • 作者简介:
    左书祺(@Draven)

    Kubernetes贡献者、前调度器项目组成员、云计算和资源调度架构师。“面向信仰编程”博客作者,开源电子书《Go语言设计与实现》作者,“真没什么逻辑”主理人。长期维护开源项目。

    《Go语言设计与实现》有30多万读者追更,全网阅读量已经超过100万。
  • 目录:
    前言    iii

    第 1章 调试源代码 1

    1.1 Go语言源代码 1

    1.2 编译源代码 2

    1.3 中间代码 3

    1.4 小结 4

    第 2章 编译原理 5

    2.1 编译过程 5

    2.1.1 预备知识 5

    2.1.2 编译四阶段 7

    2.1.3 编译器入口 10

    2.1.4 小结 11

    2.1.5 延伸阅读 12

    2.2 词法分析和语法分析 12

    2.2.1 词法分析 12

    2.2.2 语法分析 17

    2.2.3 小结 26

    2.2.4 延伸阅读 26

    2.3 类型检查 26

    2.3.1 强弱类型 26

    2.3.2 静态类型与动态类型 27

    2.3.3 执行过程 28

    2.3.4 小结 34

    2.4 中间代码生成 34

    2.4.1 概述 34

    2.4.2 配置初始化 35

    2.4.3 遍历和替换 37

    2.4.4 SSA生成 40

    2.4.5 小结 44

    2.5 机器码生成 44

    2.5.1 指令集架构 44

    2.5.2 机器码生成 45

    2.5.3 小结 49

    2.5.4 延伸阅读 50

    第3章 数据结构 51

    3.1 数组 51

    3.1.1 概述 51

    3.1.2 初始化 52

    3.1.3 访问和赋值 55

    3.1.4 小结 57

    3.1.5 延伸阅读 58

    3.2 切片 58

    3.2.1 数据结构 58

    3.2.2 初始化 59

    3.2.3 访问元素 63

    3.2.4 追加和扩容 64

    3.2.5 复制切片 67

    3.2.6 小结 68

    3.2.7 延伸阅读 68

    3.3 哈希表 68

    3.3.1 设计原理 69

    3.3.2 数据结构 72

    3.3.3 初始化 74

    3.3.4 读写操作 77

    3.3.5 小结 88

    3.3.6 延伸阅读 88

    3.4 字符串 88

    3.4.1 数据结构 89

    3.4.2 解析过程 89

    3.4.3 拼接 91

    3.4.4 类型转换 93

    3.4.5 小结 95

    3.4.6 延伸阅读 95

    第4章 语言特性 96

    4.1 函数调用 96

    4.1.1 调用惯例 96

    4.1.2 参数传递 101

    4.1.3 小结 104

    4.1.4 延伸阅读 104

    4.2 接口 105

    4.2.1 概述 105

    4.2.2 数据结构 111

    4.2.3 类型转换 113

    4.2.4 类型断言 116

    4.2.5 动态派发 118

    4.2.6 小结 122

    4.2.7 延伸阅读 122

    4.3 反射 123

    4.3.1 三大法则 124

    4.3.2 类型和值 127

    4.3.3 更新变量 129

    4.3.4 实现协议 130

    4.3.5 方法调用 132

    4.3.6 小结 135

    4.3.7 延伸阅读 135

    第5章 常用关键字 136

    5.1 for和range 136

    5.1.1 现象 137

    5.1.2 经典循环 140

    5.1.3 范围循环 141

    5.1.4 小结 147

    5.2 select 148

    5.2.1 现象 148

    5.2.2 数据结构 151

    5.2.3 实现原理 151

    5.2.4 小结 160

    5.2.5 延伸阅读 161

    5.3 defer 161

    5.3.1 现象 161

    5.3.2 数据结构 163

    5.3.3 执行机制 164

    5.3.4 堆中分配 164

    5.3.5 栈上分配 168

    5.3.6 开放编码 169

    5.3.7 小结 173

    5.3.8 延伸阅读 174

    5.4 panic和recover 174

    5.4.1 现象 175

    5.4.2 数据结构 177

    5.4.3 程序崩溃 178

    5.4.4 崩溃恢复 179

    5.4.5 小结 181

    5.4.6 延伸阅读 181

    5.5 make和new 181

    5.5.1 make 182

    5.5.2 new 183

    5.5.3 小结 184

    第6章 并发编程 185

    6.1 上下文 185

    6.1.1 设计原理 186

    6.1.2 默认上下文 187

    6.1.3 取消信号 188

    6.1.4 传值方法 192

    6.1.5 小结 192

    6.1.6 延伸阅读 192

    6.2 同步原语与锁 193

    6.2.1 基本原语 193

    6.2.2 扩展原语 209

    6.2.3 小结 218

    6.2.4 延伸阅读 218

    6.3 计时器 219

    6.3.1 设计原理 219

    6.3.2 数据结构 222

    6.3.3 状态机 223

    6.3.4 触发计时器 229

    6.3.5 小结 231

    6.3.6 延伸阅读 232

    6.3.7 历史变更 232

    6.4 Channel 232

    6.4.1 设计原理 232

    6.4.2 数据结构 234

    6.4.3 创建Channel 235

    6.4.4 发送数据 237

    6.4.5 接收数据 240

    6.4.6 关闭Channel 245

    6.4.7 小结 246

    6.4.8 延伸阅读 246

    6.5 调度器 246

    6.5.1 设计原理 247

    6.5.2 数据结构 255

    6.5.3 调度器启动 260

    6.5.4 创建Goroutine 261

    6.5.5 调度循环 266

    6.5.6 触发调度 269

    6.5.7 线程管理 274

    6.5.8 小结 276

    6.5.9 延伸阅读 276

    6.6 网络轮询器 276

    6.6.1 设计原理 276

    6.6.2 数据结构 280

    6.6.3 多路复用 281

    6.6.4 小结 288

    6.6.5 延伸阅读 289

    6.7 系统监控 289

    6.7.1 设计原理 289

    6.7.2 监控循环 289

    6.7.3 小结 296

    第7章 内存管理 297

    7.1 内存分配器 297

    7.1.1 设计原理 297

    7.1.2 内存管理组件 304

    7.1.3 内存分配 317

    7.1.4 小结 322

    7.1.5 延伸阅读 322

    7.1.6 历史变更 322

    7.2 垃圾收集器 323

    7.2.1 设计原理 323

    7.2.2 演进过程 331

    7.2.3 实现原理 334

    7.2.4 小结 358

    7.2.5 延伸阅读 358

    7.3 栈空间管理 358

    7.3.1 设计原理 359

    7.3.2 栈操作 363

    7.3.3 小结 369

    7.3.4 延伸阅读 370

    第8章 元编程 371

    8.1 插件系统 371

    8.1.1 设计原理 371

    8.1.2 动态库 373

    8.1.3 小结 376

    8.1.4 延伸阅读 376

    8.2 代码生成 377

    8.2.1 设计原理 377

    8.2.2 代码生成 377

    8.2.3 小结 382

    第9章 标准库 383

    9.1 JSON 383

    9.1.1 设计原理 383

    9.1.2 序列化 385

    9.1.3 反序列化 389

    9.1.4 小结 392

    9.2 HTTP 392

    9.2.1 设计原理 393

    9.2.2 客户端 395

    9.2.3 服务端 402

    9.2.4 小结 406

    9.3 数据库 406

    9.3.1 设计原理 406

    9.3.2 驱动接口 407

    9.3.3 小结 410
查看详情
相关图书 / 更多
Go语言设计与实现
Go专家编程(第2版)
任洪彩
Go语言设计与实现
Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用
[澳]阿米特·萨哈(Amit Saha)著 贾玉彬 刘光磊 译;上海碳泽信息科技有限公司 审校
Go语言设计与实现
Go语言从入门到项目实战(视频版)
刘瑜 萧文翰 董树南 著
Go语言设计与实现
Go语言从入门到项目实践(超值版)
余建熙
Go语言设计与实现
Go语言学习指南:惯例模式与编程实践
乔恩·博德纳(Jon Bodner)
Go语言设计与实现
Go语言程序设计-微课视频版
肖建良;赵文丽
Go语言设计与实现
Go程序员面试笔试宝典
饶全成 欧长坤 楚秦等编著 猿媛之家 组编
Go语言设计与实现
Go语言程序设计项目化教程(微课版)
谭旭;史律;钟祥永
Go语言设计与实现
Go程序开发实战宝典
穆旭东 谭庆丰 楚秦 编著;猿媛之家 组编
Go语言设计与实现
Go语言与区块链开发(计算机类普通高等教育双一流课程系列教材)
冯柳平、陈澜祯、袁贵春、卢婷婷 编
Go语言设计与实现
Go语言Hyperledger区块链开发实战
李晓黎
Go语言设计与实现
Go语言设计模式(双色版)
廖显东