本书由《C程序设计语言》的作者Kernighan和谷歌公司Go团队主管AlanDonovan联袂撰写,是学习Go语言程序设计指南。本书共13章,主要内容包括:Go的基础知识、基本结构、基本数据类型、复合数据类型、函数、方法、接口、goroutine、通道、共享变量的并发性、包、go工具、测试、反射等。本书适合作为计算机相关专业的教材,也可供Go语言爱好者阅读。
Alan Donovan 是谷歌公司基础架构部的主管工程师,专长是软件开发工具。自2012年,他一直工作的Got团队,设计用于静态分析的库和工具。他是”oracle”、“godoc –analysis”、“eg”和“gorename”的作者。
Brianv Kernighan是《C程序设计语言》的作者之一,他与C语言的发明人Dennis Ritchie共同合作了这本书,K&R就是两人名字的缩写。他是一位加拿大计算机科学家,在贝尔实验室,他与Unix的创造者Ken Thompson以及Dennis Ritchie一起工作,同时它也是开发Unix的主要贡献者。他是 AWK 和 AMPL 编程语言的作者之一,AWK中的K说的就是Kernighan。Brian Kernighan现在是普林斯顿大学计算机学院的教授,同时,他也是本科学部的代表。
目录
The Go Programming Language
出版者的话
译者序
前言
第1章入门 1
1.1hello,world 1
1.2命令行参数 3
1.3找出重复行 6
1.4GIF动画 10
1.5获取一个URL 12
1.6并发获取多个URL 13
1.7一个Web服务器 14
1.8其他内容 17
第2章程序结构 20
2.1名称 20
2.2声明 21
2.3变量 22
2.3.1短变量声明 22
2.3.2指针 23
2.3.3new函数 25
2.3.4变量的生命周期 26
2.4赋值 27
2.4.1多重赋值 27
2.4.2可赋值性 28
2.5类型声明 29
2.6包和文件 30
2.6.1导入 31
2.6.2包初始化 33
2.7作用域 34
第3章基本数据 38
3.1整数 38
3.2浮点数 42
3.3复数 45
3.4布尔值 47
3.5字符串 47
3.5.1字符串字面量 49
3.5.2Unicode 49
3.5.3UTF-8 50
3.5.4字符串和字节slice 53
3.5.5字符串和数字的相互转换 56
3.6常量 56
3.6.1常量生成器iota 57
3.6.2无类型常量 59
第4章复合数据类型 61
4.1数组 61
4.2slice 63
4.2.1append函数 66
4.2.2slice就地修改 69
4.3map 71
4.4结构体 76
4.4.1结构体字面量 78
4.4.2结构体比较 80
4.4.3结构体嵌套和匿名成员 80
4.5JSON 82
4.6文本和HTML模板 87
第5章函数 92
5.1函数声明 92
5.2递归 93
5.3多返回值 96
5.4错误 98
5.4.1错误处理策略 99
5.4.2文件结束标识 101
5.5函数变量 102
5.6匿名函数 104
5.7变长函数 110
5.8延迟函数调用 111
5.9宕机 115
5.10恢复 118
第6章方法 120
6.1方法声明 120
6.2指针接收者的方法 122
6.3通过结构体内嵌组成类型 124
6.4方法变量与表达式 127
6.5示例:位向量 128
6.6封装 130
第7章接口 133
7.1接口即约定 133
7.2接口类型 135
7.3实现接口 136
7.4使用flag.Value来解析参数 139
7.5接口值 141
7.6使用sort.Interface来排序 144
7.7http.Handler接口 148
7.8error接口 152
7.9示例:表达式求值器 154
7.10类型断言 160
7.11使用类型断言来识别错误 161
7.12通过接口类型断言来查询特性 162
7.13类型分支 164
7.14示例:基于标记的XML解析 166
7.15一些建议 168
第8章goroutine和通道 170
8.1goroutine 170
8.2示例:并发时钟服务器 171
8.3示例:并发回声服务器 174
8.4通道 176
8.4.1无缓冲通道 177
8.4.2管道 178
8.4.3单向通道类型 180
8.4.4缓冲通道 181
8.5并行循环 183
8.6示例:并发的Web爬虫 187
8.7使用select多路复用 190
8.8示例:并发目录遍历 192
8.9取消 195
8.10示例:聊天服务器 198
第9章使用共享变量实现并发 201
9.1竞态 201
9.2互斥锁:sync.Mutex 205
9.3读写互斥锁:sync.RWMutex 208
9.4内存同步 208
9.5延迟初始化:sync.Once 210
9.6竞态检测器 212
9.7示例:并发非阻塞缓存 212
9.8goroutine与线程 218
9.8.1可增长的栈 219
9.8.2goroutine调度 219
9.8.3GOMAXPROCS 219
9.8.4goroutine没有标识 220
第10章包和go工具 221
10.1引言 221
10.2导入路径 221
10.3包的声明 222
10.4导入声明 223
10.5空导入 223
10.6包及其命名 225
10.7go工具 226
10.7.1工作空间的组织 227
10.7.2包的下载 228
10.7.3包的构建 229
10.7.4包的文档化 231
10.7.5内部包 232
10.7.6包的查询 233
第11章测试 235
11.1go test工具 235
11.2Test函数 236
11.2.1随机测试 239
11.2.2测试命令 240
11.2.3白盒测试 242
11.2.4外部测试包 245
11.2.5编写有效测试 246
11.2.6避免脆弱的测试 247
11.3覆盖率 248
11.4Benchmark函数 250
11.5性能剖析 252
11.6Example函数 254
第12章反射 256
12.1为什么使用反射 256
12.2reflect.Type和reflect.Value 257
12.3Display:一个递归的值显示器 259
12.4示例:编码S表达式 263
12.5使用reflect.Value来设置值 266
12.6示例:解码S表达式 268
12.7访问结构体字段标签 271
12.8显示类型的方法 273
12.9注意事项 274
第13章低级编程 276
13.1unsafe.Sizeof、Alignof 和Offsetof 276
13.2unsafe.Pointer 278
13.3示例:深度相等 280
13.4使用cgo调用C代码 282
13.5关于安全的注意事项 286
刚开始看,go语言不错
感觉不错……
go语言大作,值得学习
纸质真是非常一般
快递有点慢 书质量还可以
性价比超高
内容不错 随手看了看
还行 没想想的厚 略薄
翻译什么的就算了,还没头没尾的,也不适合学习。这书的读者默认为已经是编程老手,不然不是你有点基础就可以学的。
绝对正版书,很不错的资料,宅急送快递给力
物流慢,包装破损。物流慢,包装破损。物流慢,包装破损。物流慢,包装破损。物流慢,包装破损。物流慢,包装破损。
那翻译真是有够烂的,改排名那么前也是醉了,烂,就一个字,真心恶心翻译
物流速度快
不容易阅读,也许是翻译的不太好
不错,先看看
很多东西解释的很详细。很好。
紧跟技术发展
go语言圣经,书不错
特别好的书籍,值得推荐哦!
第一次看见go 语言就喜欢了他的预发。现在买书来查询
经典C语言《C程序设计语言》作者写的书,必定也是经典的书
书不错,内容很全面,对go做了深入说明,有很多编码易错的注意事项,与其他语法差异处也有详细说明