Contents
读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
本书使用的设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
1 简介 1
官方文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
前身 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
获得 Go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
在 Windows 下获得 Go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
答案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 基础 6
Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
编译和运行代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
本书使用的设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
变量、类型和保留字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
运算符和内建函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Go 保留字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
控制结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
内建函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
array、slices 和 map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
答案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 函数 30
作用域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
多值返回 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
命名返回值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
延迟代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
变参 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
函数作为值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
回调 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
恐慌(Panic)和恢复(Recover) . . . . . . . . . . . . . . . . . . . . . . . 36
练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
答案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4 包 48
标识符 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
包的文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
测试包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
常用的包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
答案 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5 进阶 58
内存分配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
定义自己的类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61