封面
版权信息
内容简介
致词
本书译者团队
推荐语
推荐序
前言
致谢
关于本书
关于作者
1 Go:入门易,精通难
1.1 Go语言概述
1.2 简单不意味着容易
1.3 100个Go语言错误
总结
2 代码和项目组织
2.1#1:意想不到的变量隐藏
2.2#2:不必要的嵌套代码
2.3#3:滥用init函数
2.4#4:过度使用getter和setter
2.5#5:避免接口污染
2.6#6:在生产者端的接口
- APP免费
2.7#7:返回接口
- APP免费
2.8#8:any意味着nothing
- APP免费
2.9#9:不知道什么时候使用泛型
- APP免费
2.10#10:没有意识到类型嵌入可能存在的问题
- APP免费
2.11#11:不使用函数式选项模式
- APP免费
2.12#12:项目组织混乱
- APP免费
2.13#13:创建实用程序包
- APP免费
2.14#14:忽略包名称冲突
- APP免费
2.15#15:缺少代码文档
- APP免费
2.16#16:不使用代码检查工具
- APP免费
总结
- APP免费
3 数据类型
- APP免费
3.1#17:使用八进制字面量会带来混淆
- APP免费
3.2#18:容易忽视的整数溢出
- APP免费
3.3#19:不了解浮点数
- APP免费
3.4#20:不了解切片的长度和容量
- APP免费
3.5#21:低效的切片初始化
- APP免费
3.6#22:对nil和空切片的困惑
- APP免费
3.7#23:未正确检查切片是否为空
- APP免费
3.8#24:无法正确复制切片
- APP免费
3.9#25:使用append的副作用
- APP免费
3.10#26:切片和内存泄漏
- APP免费
3.11#27:低效的map初始化
- APP免费
3.12#28:map和内存泄漏
- APP免费
3.13#29:比较值时发生的错误
- APP免费
总结
- APP免费
4 控制结构
- APP免费
4.1#30:忽视在range循环中元素被复制的事实
- APP免费
4.2#31:忽视range循环中参数是如何求值的
- APP免费
4.3#32:忽视在range循环中使用指针元素的影响
- APP免费
4.4#33:在map迭代过程中做出错误假设
- APP免费
4.5#34:忽视break语句是如何工作的
- APP免费
4.6#35:在循环中使用defer
- APP免费
总结
- APP免费
5 字符串
- APP免费
5.1#36:不理解rune的概念
- APP免费
5.2#37:字符串迭代不准确
- APP免费
5.3#38:乱用trim函数
- APP免费
5.4#39:缺乏优化的字符串连接
- APP免费
5.5#40:无用的字符串转换
- APP免费
5.6#41:子字符串和内存泄漏
- APP免费
总结
- APP免费
6 函数与方法
- APP免费
6.1#42:不知道使用什么类型的接收器
- APP免费
6.2#43:不要使用命名的结果参数
- APP免费
6.3#44:使用命名的结果参数的意外副作用
- APP免费
6.4#45:返回一个nil接收器
- APP免费
6.5#46:使用文件名作为函数输入
- APP免费
6.6#47:忽略defer语句参数和接收器的计算
- APP免费
总结
- APP免费
7 错误管理
- APP免费
7.1#48:panic
- APP免费
7.2#49:搞不清何时需要包装错误
- APP免费
7.3#50:不准确的错误类型检查
- APP免费
7.4#51:错误地检查错误值
- APP免费
7.5#52:处理同一个错误两次
- APP免费
7.6#53:忽略错误
- APP免费
7.7#54:忽略defer语句返回的错误
- APP免费
总结
- APP免费
8 并发:基础
- APP免费
8.1#55:混淆并发和并行
- APP免费
8.2#56:认为并发总是更快
- APP免费
8.3#57:对何时使用channel或互斥锁感到困惑
- APP免费
8.4#58:不理解竞争问题
- APP免费
8.5#59:不了解工作负载类型对并发的影响
- APP免费
8.6#60:误解Go上下文
- APP免费
总结
- APP免费
9 并发:实践
- APP免费
9.1#61:传播不恰当的上下文
- APP免费
9.2#62:在不知道何时停止的情况下启动goroutine
- APP免费
9.3#63:没有小心处理oroutine和循环变量
- APP免费
9.4#64:使用select和channel来期待确定性行为
- APP免费
9.5#65:没有使用通知channel
- APP免费
9.6#66:没有使用nil channel
- APP免费
9.7#67:对channel缓冲区大小感到困惑
- APP免费
9.8#68:忘记字符串格式化可能产生的副作用
- APP免费
9.9#69:使用append函数创造了数据竞争
- APP免费
9.10#70:对切片和map不准确地使用互斥锁
- APP免费
9.11#71:错误使用sync.WaitGroup
- APP免费
9.12#72:忘记了sync.Cond
- APP免费
9.13#73:没有使用errgroup
- APP免费
9.14#74:复制sync类型
- APP免费
总结
- APP免费
10 标准库
- APP免费
10.1#75:提供错误的持续时间
- APP免费
10.2#76:time.After和内存泄漏
- APP免费
10.3#77:常见的JSON处理错误
- APP免费
10.4#78:常见的SQL错误
- APP免费
10.5#79:没有关闭瞬时资源
- APP免费
10.6#80:在响应HTTP请求后忘记加return语句
- APP免费
10.7#81:使用默认的HTTP客户端和服务端
- APP免费
总结
- APP免费
11 测试
- APP免费
11.1#82:未区分测试种类
- APP免费
11.2#83:未打开-race开关
- APP免费
11.3#84:未使用测试执行模式
- APP免费
11.4#85:未使用表格驱动型测试
- APP免费
11.5#86:在单元测试中休眠
- APP免费
11.6#87:没有有效处理time API
- APP免费
11.7#88:未使用测试工具包
- APP免费
11.8#89:写出不准确的基准测试
- APP免费
11.9#90:未探索所有的Go测试特性
- APP免费
总结
- APP免费
12 优化
- APP免费
12.1#91:不了解CPU缓存
- APP免费
12.2#92:编写导致伪共享的并发代码
- APP免费
12.3#93:不考虑指令级并行性
- APP免费
12.4#94:不了解数据对齐
- APP免费
12.5#95:不了解栈与堆
- APP免费
12.6#96:不了解如何减少分配
- APP免费
12.7#97:没有依赖内联
- APP免费
12.8#98:没有使用Go诊断工具
- APP免费
12.9#99:不了解GC的工作原理
- APP免费
12.10#100:不了解在Docker和Kubernetes中运行Go程序的影响
- APP免费
总结
- APP免费
结语
- APP免费
封底
更新时间:2024-05-11 18:01:52