本书由Datadog公司高级工程师Jon Bodner撰写,他不仅介绍了资深Go发者所采用的设计模式,还深探讨了使用这些模式的根本原因。书中通过大量示例,帮助发者编写清晰、地道的Go语言代码,并设计Go语言项目。相较上一版,本书新增了Go语言泛型和工具集的独立章节,涵盖go vet、go fmt等核心工具,并通过实际示例详解每个工具的使用方法和应用场景。每章末尾新增练习题,帮助读者巩固所学知识。无论你是Go语言初学者,还是经验丰富的发者,本书都能让你获益良多。
售 价:¥
纸质售价:¥119.30购买纸书
6.6
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐

书名页
版权
O'Reilly Media, Inc.介绍
本书赞誉
本书赞誉(第1版)
推荐序一
推荐序二
推荐序三
译者序
前言
第1章 设置你的Go环境
1.1 安装Go工具
1.2 你的第一个Go程序
1.3 选择你的工具
1.4 Makefile文件
1.5 Go兼容性承诺
1.6 保持更新
1.7 练习
1.8 总结
第2章 基础类型和变量声明
2.1 基础类型
2.2 var与:=的区别
2.3 使用const
2.4 有类型常量和无类型常量
2.5 未使用的变量
2.6 命名变量和常量
2.7 练习
2.8 总结
第3章 复合类型
3.1 数组类型—因不灵活而较少被使用
3.2 切片类型
3.3 字符串、字符和字节
3.4 映射类型
3.5 结构体类型
3.6 练习
3.7 总结
第4章 代码块、影子变量和控制结构
4.1 代码块
4.2 影子变量
4.3 if语句
4.4 for语句
4.5 switch语句
4.6 goto语句
4.7 练习
4.8 总结
第5章 函数
5.1 声明和调用函数
5.2 函数也是值
5.3 闭包
5.4 defer
5.5 Go语言的值传递
5.6 练习
5.7 总结
第6章 指针
6.1 快速指针入门
6.2 不畏惧指针
6.3 指针表示可变参数
6.4 指针是最后的手段
6.5 指针传递的性能
6.6 零值与无值的区别
6.7 映射与切片的区别
6.8 切片作为缓冲区
6.9 减少垃圾回收的负担
6.10 垃圾回收器调优
6.11 练习
6.12 总结
第7章 类型、方法和接口
7.1 语言中的类型
7.2 方法
7.3 iota有时用于枚举
7.4 使用内嵌进行组合
7.5 内嵌不是继承
7.6 接口概览
7.7 接口是类型安全的鸭子类型
7.8 内嵌与接口
7.9 接收接口,返回结构体
7.10 接口和nil
7.11 接口是可比较的
7.12 空接口
7.13 类型断言和type-switch
7.14 谨慎使用类型断言和type-switch
7.15 函数类型实现接口
7.16 隐式接口实现依赖注入
7.17 Wire
7.18 Go并非传统意义上的面向对象语言
7.19 练习
7.20 总结
第8章 泛型
8.1 泛型减少重复代码并增强类型安全性
8.2 在Go中引入泛型
8.3 泛型函数抽象算法
8.4 泛型和接口
8.5 使用类型术语指定运算符
8.6 类型推断与泛型
8.7 类型元素限制常量
8.8 结合泛型函数与泛型数据结构
8.9 关于可比性的更多信息
8.10 被省略的事物
8.11 习惯性的Go语言和泛型使用
8.12 向标准库添加泛型
8.13 解锁未来特性
8.14 练习
8.15 总结
第9章 错误处理
9.1 如何处理错误:基础知识
9.2 使用字符串创建简单错误
9.3 哨兵错误
9.4 错误也是值
9.5 包装错误
9.6 包装多个错误
9.7 Is和As
9.8 使用defer包装错误
9.9 panic与recover
9.10 从错误中获取栈跟踪
9.11 练习
9.12 总结
第10章 模块、包和导入
10.1 仓库、模块和包
10.2 使用go.mod
10.3 创建包
10.4 使用模块
10.5 发布模块
10.6 对模块进行版本控制
10.7 模块代理服务器
10.8 附加细节
10.9 练习
10.10 总结
第11章 Go工具集
11.1 使用go run构建并执行
11.2 使用go install添加第三方工具
11.3 使用goimports改进导入格式
11.4 使用代码质量静态分析工具
11.5 使用govulncheck扫描存在漏洞的依赖项
11.6 嵌入内容到程序中
11.7 嵌入隐藏文件
11.8 使用go generate
11.9 使用go generate和Makefile
11.10 在Go二进制文件内读取构建信息
11.11 为其他平台构建Go二进制文件
11.12 使用构建标签
11.13 测试Go的版本
11.14 使用go help了解有关Go工具的更多信息
11.15 练习
11.16 总结
第12章 Go中的并发性
12.1 何时使用并发
12.2 协程
12.3 通道
12.4 select
12.5 并发实践和模式
12.6 何时使用互斥锁而不是通道
12.7 原子操作—你可能不需要这些
12.8 关于并发的更多学习资源
12.9 练习
12.10 总结
第13章 标准库
13.1 io家族
13.2 时间
13.3 encoding/json
13.4 net/http
13.5 结构化日志
13.6 练习
13.7 总结
第14章 context
14.1 什么是context
14.2 值
14.3 取消
14.4 带有截止时间的context
14.5 在代码中取消context
14.6 练习
14.7 总结
第15章 编写测试
15.1 测试的基本知识
15.2 表格驱动测试
15.3 并发运行测试
15.4 检查代码覆盖率
15.5 模糊测试
15.6 使用基准测试
15.7 Go中的测试桩
15.8 httptest
15.9 集成测试和构建标签
15.10 使用数据竞争检测器检查并发问题
15.11 练习
15.12 总结
第16章 恶龙禁区:反射、unsafe和cgo
16.1 反射:运行时类型处理
16.2 unsafe意味着不安全
16.3 cgo用于集成而非性能优化
16.4 练习
16.5 总结
关于作者
关于封面
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜