国外最经典的Go语言著作,Go语言编程的先驱者Mark Summerfield的实践经验总结。
这是一本Go语言实战指南,帮你了解Go语言,按Go语言的方式思考,以及使用Go语言来编写高性能软件。
作者展示了如何编写充分利用Go语言突破性的特性和惯用法的代码,以及Go语言在其他语言之上所做的改进,并着重强调了Go语言的关键创新。
注重实践教学,每章都提供了多个经过精心设计的代码示例。
由国内第一个核心服务完全采用Go语言实现的团队——七牛团队核心成员翻译。、
目录
- Go语言程序设计》
- 第1章 5个例子 1
- 1.1 开始 1
- 1.2 编辑、编译和运行 3
- 1.3 Hello Who? 6
- 1.4 大数字——二维切片 8
- 1.5 栈——自定义类型及其方法 12
- 1.6 americanise示例——文件、映射和闭包 18
- 1.7 从极坐标到笛卡儿坐标——并发 28
- 1.8 练习 33
- 第2章 布尔与数值类型 35
- 2.1 基础 35
- 2.2 布尔值和布尔表达式 39
- 2.3 数值类型 40
- 2.3.1 整型 42
- 2.3.2 浮点类型 46
- 2.4 例子:statistics 53
- 2.4.1 实现一个简单的统计函数 54
- 2.4.2 实现一个基本的HTTP服务器 55
- 2.5 练习 58
- 第3章 字符串 60
- 3.1 字面量、操作符和转义 61
- 3.2 比较字符串 63
- 3.3 字符和字符串 65
- 3.4 字符串索引与切片 67
- 3.5 使用fmt包来格式化字符串 69
- 3.5.1 格式化布尔值 73
- 3.5.2 格式化整数 74
- 3.5.3 格式化字符 75
- 3.5.4 格式化浮点数 75
- 3.5.5 格式化字符串和切片 76
- 3.5.6 为调试格式化 78
- 3.6 其他字符处理相关的包 80
- 3.6.1 strings包 81
- 3.6.2 strconv包 86
- 3.6.3 utf8包 90
- 3.6.4 unicode包 91
- 3.6.5 regexp包 92
- 3.7 例子:m3u2pls 101
- 3.8 练习 106
- 第4章 集合类型 108
- 4.1 值、指针和引用类型 108
- 4.2 数组和切片 115
- 4.2.1 索引与分割切片 119
- 4.2.2 遍历切片 119
- 4.2.3 修改切片 121
- 4.2.4 排序和搜索切片 125
- 4.3 映射 128
- 4.3.1 创建和填充映射 129
- 4.3.2 映射查询 131
- 4.3.3 修改映射 132
- 4.3.4 键序遍历映射 132
- 4.3.5 映射反转 133
- 4.4 例子 134
- 4.4.1 猜测分隔符 134
- 4.4.2 词频统计 136
- 4.5 练习 141
- 第5章 过程式编程 144
- 5.1 语句基础 144
- 5.1.1 类型转换 147
- 5.1.2 类型断言 148
- 5.2 分支 149
- 5.2.1 if语句 150
- 5.2.2 switch语句 151
- 5.3 for循环语句 158
- 5.4 通信和并发语句 160
- 5.5 defer、panic和recover 166
- 5.6 自定义函数 171
- 5.6.1 函数参数 172
- 5.6.2 init()函数和main()函数 175
- 5.6.3 闭包 176
- 5.6.4 递归函数 178
- 5.6.5 运行时选择函数 181
- 5.6.6 泛型函数 183
- 5.6.7 高阶函数 187
- 5.7 例子:缩进排序 192
- 5.8 练习 197
- 第6章 面向对象编程 199
- 6.1 几个关键概念 199
- 6.2 自定义类型 201
- 6.2.1 添加方法 203
- 6.2.2 验证类型 207
- 6.3 接口 209
- 6.4 结构体 217
- 6.5 例子 224
- 6.5.1 FuzzyBool——一个单值自定义类型 224
- 6.5.2 Shapes——一系列自定义类型 229
- 6.5.3 有序映射——一个通用的集合类型 240
- 6.6 练习 248
- 第7章 并发编程 251
- 7.1 关键概念 252
- 7.2 例子 256
- 7.2.1 过滤器 256
- 7.2.2 并发的Grep 260
- 7.2.3 线程安全的映射 266
- 7.2.4 Apache报告 271
- 7.2.5 查找副本 278
- 7.3 练习 285
- 第8章 文件处理 287
- 8.1 自定义数据文件 287
- 8.1.1 处理JSON文件 290
- 8.1.2 处理XML文件 295
- 8.1.3 处理纯文本文件 301
- 8.1.4 处理Go语言二进制文件 307
- 8.1.5 处理自定义的二进制文件 309
- 8.2 归档文件 317
- 8.2.1 创建zip归档文件 317
- 8.2.2 创建可压缩的tar包 319
- 8.2.3 解开zip归档文件 321
- 8.2.4 解开tar归档文件 322
- 8.3 练习 324
- 第9章 包 326
- 9.1 自定义包 326
- 9.1.1 创建自定义的包 327
- 9.1.2 导入包 333
- 9.2 第三方包 334
- 9.3 Go命令行工具简介 335
- 9.4 Go标准库简介 336
- 9.4.1 归档和压缩包 336
- 9.4.2 字节流和字符串相关的包 336
- 9.4.3 容器包 337
- 9.4.4 文件和操作系统相关的包 339
- 9.4.5 图像处理相关的包 341
- 9.4.6 数学处理包 341
- 9.4.7 其他一些包 341
- 9.4.8 网络包 342
- 9.4.9 反射包 343
- 9.5 练习 346
- 附录A 后记 348
- 附录B 软件专利的危害 350
- 附录C 精选书目 353