Go语言趣学指南

作者
内森·扬曼(Nathan Youngman) [英] 罗杰·佩珀(R
丛书名
出版社
人民邮电出版社
ISBN
9787115531421
简要
简介
内容简介书籍计算机书籍 《Go语言趣学指南》是一本面向Go语言初学者的书,循序渐进地介绍了使用Go语言所必需的知识,展示了非常多生动有趣的例子,并通过提供大量练习来加深读者对书中所述内容的理解。本书共分8个单元,分别介绍变量、常量、分支和循环等基础语句,整数、浮点数和字符串等常用类型,类型、函数和方法,数组、切片和映射,结构和接口,指针、nil和错误处理方法,并发和状态保护,并且每个单元都包含相应的章节和单元测试。 《Go语言趣学指南》适合对初学Go语言有不同需求的程序员阅读。无论是刚开始学习Go语言的新手,还是想要回顾Go语言基础知识的Go语言使用者,只要是想用Go做开发,无论是开发小型脚本还是大型程序,《Go语言趣学指南》都会非常有帮助。
目录



第0单元 入门


第 1章 各就各位,预备,Go! 3


1.1 什么是Go 4


1.2 Go Playground 6


1.3 包和函数 7


1.4 唯一允许的大括号放置风格 8


1.5 小结 9


实验:playground.go 10


第 1单元 命令式编程


第 2章 被美化的计算器 13


2.1 执行计算 13


2.2 格式化输出 15


2.3 常量和变量 16


2.4 走捷径 18


2.4.1 一次声明多个变量 18


2.4.2 增量并赋值操作符 18


2.5 数字游戏 19


2.6 小结 20


实验:malacandra.go 21


第3章 循环和分支 22


3.1 真或假 23


3.2 比较 24


3.3 使用if实现分支判断 25


3.4 逻辑运算符 26


3.5 使用switch实现分支判断 28


3.6 使用循环实现重复执行 30


3.7 小结 31


实验:guess.go 32


第4章 变量作用域 33


4.1 审视作用域 34


4.2 简短声明 35


4.3 作用域的范围 37


4.4 小结 39


实验:random-dates.go 39


第5章 单元实验:前往火星的航行票 40


第 2单元 类型


第6章 实数 45


6.1 声明浮点类型变量 46


6.1.1 单精度浮点数 47


6.1.2 零值 47


6.2 打印浮点类型 48


6.3 浮点精确性 49


6.4 比较浮点数 51


6.5 小结 51


实验:piggy.go 52


第7章 整数 53


7.1 声明整数类型变量 54


7.1.1 为不同场合而设的整数类型 54


7.1.2 了解类型 56


7.2 为8位颜色使用uint8类型 56


7.3 整数回绕 58


7.3.1 聚焦二进制位 58


7.3.2 避免时间回绕 60


7.4 小结 61


实验:piggy.go 62


第8章 大数 63


8.1 击中天花板 63


8.2 big包 65


8.3 大小非同寻常的常量 66


8.4 小结 68


实验:cains.go 68


第9章 多语言文本 69


9.1 声明字符串变量 70


9.2 字符、代码点、符文和字节 71


9.3 拉弦 73


9.4 使用凯撒加密法处理字符 73


9.5 将字符串解码为符文 76


9.6 小结 77


实验:caesar.go 78


实验:international.go 78


第 10章 类型转换 79


10.1 类型不能混合使用 79


10.2 数字类型转换 81


10.3 类型转换的危险之处 82


10.4 字符串转换 83


10.5 转换布尔值 85


10.6 小结 86


实验:input.go 86


第 11章 单元实验:维吉尼亚加密法 87


实验:decipher.go 88


实验:cipher.go 89


第3单元 构建块


第 12章 函数 93


12.1 函数声明 94


12.2 编写函数 97


12.3 小结 99


实验:functions.go 99


第 13章 方法 100


13.1 声明新类型 101


13.2 引入自定义类型 102


13.3 通过方法为类型添加行为 103


13.4 小结 105


实验:methods.go 106


第 14章 一等函数 107


14.1 将函数赋值给变量 108


14.2 将函数传递给其他函数 109


14.3 声明函数类型 110


14.4 闭包和匿名函数 111


14.5 小结 113


实验:calibrate.go 114


第 15章 单元实验:温度表 115


第4单元 收集器


第 16章 劳苦功高的数组 119


16.1 声明数组并访问其元素 119


16.2 小心越界 121


16.3 使用复合字面量初始化数组 121


16.4 迭代数组 122


16.5 数组被复制 123


16.6 由数组组成的数组 125


16.7 小结 125


实验:chess.go 126


第 17章 切片:指向数组的窗口 127


17.1 切分数组 128


17.2 切片的复合字面量 130


17.3 切片的威力 130


17.4 带有方法的切片 132


17.5 小结 133


实验:terraform.go 133


第 18章 更大的切片 134


18.1 append函数 134


18.2 长度和容量 135


18.3 详解append函数 136


18.4 三索引切分操作 137


18.5 使用make函数对切片实行预分配 138


18.6 声明可变参数函数 139


18.7 小结 140


实验:capacity.go 140


第 19章 无所不能的映射 141


19.1 声明映射 142


19.2 映射不会被复制 143


19.3 使用make函数对映射实行预分配 144


19.4 使用映射进行计数 145


19.5 使用映射和切片实现数据分组 146


19.6 将映射用作集合 147


19.7 小结 148


实验:words.go 148


第 20章 单元实验:切片人生 150


20.1 开天辟地 150


20.1.1 观察世界 151


20.1.2 激活细胞 151


20.2 适者生存 152


20.2.1 存活还是死亡 152


20.2.2 统计邻近细胞 152


20.2.3 游戏逻辑 153


20.3 平行世界 153


第5单元 状态与行为


第 21章 结构 157


21.1 声明结构 157


21.2 通过类型复用结构 159


21.3 通过复合字面量初始化结构 159


21.4 结构被复制 161


21.5 由结构组成的切片 161


21.6 将结构编码为JSON 162


21.7 使用结构标签定制JSON 164


21.8 小结 165


实验:landing.go 165


第 22章 Go没有类 166


22.1 将方法绑定到结构 166


22.2 构造函数 168


22.3 类的替代品 169


22.4 小结 171


实验:landing.go 171


实验:distance.go 171


第 23章 组合与转发 173


23.1 合并结构 174


23.2 实现自动的转发方法 176


23.3 命名冲突 178


23.4 小结 180


实验:gps.go 180


第 24章 接口 181


24.1 接口类型 182


24.2 探索接口 185


24.3 满足接口 187


24.4 小结 189


实验:marshal.go 189


第 25章 单元实验:火星上的动物避难所 190


第6单元 深入Go语言


第 26章 关于指针的二三事 195


26.1 &和* 196


26.2 指针的作用就是指向 199


26.2.1 指向结构的指针 201


26.2.2 指向数组的指针 202


26.3 实现修改 203


26.3.1 将指针用作形参 203


26.3.2 指针接收者 204


26.3.3 内部指针 206


26.3.4 修改数组 207


26.4 隐式指针 208


26.4.1 映射也是指针 208


26.4.2 切片指向数组 208


26.5 指针和接口 209


26.6 明智地使用指针 210


26.7 小结 211


实验:turtle.go 211


第 27章 关于nil的纷纷扰扰 212


27.1 通向惊恐的nil指针 213


27.2 保护你的方法 214


27.3 nil函数值 216


27.4 nil切片 217


27.5 nil映射 218


27.6 nil接口 218


27.7 nil之外的另一个选择 219


27.8 小结 220


实验:knights.go 221


第 28章 孰能无过 222


28.1 处理错误 223


28.2 优雅的错误处理 224


28.2.1 文件写入 225


28.2.2 关键字defer 227


28.2.3 创造性的错误处理 228


28.3 新的错误 229


28.3.1 按需返回错误 231


28.3.2 自定义错误类型 232


28.4 不要惊恐 235


28.4.1 其他语言中的异常 235


28.4.2 如何引发惊恐 236


28.4.3 处理惊恐 237


28.5 小结 237


实验:url.go 238


第 29章 单元实验:数独规则 239


第7单元 并发编程


第30章 goroutine和并发 243


30.1 启动goroutine 244


30.2 不止一个goroutine 245


30.3 通道 247


30.4 使用select处理多个通道 249


30.5 阻塞和死锁 251


30.6 地鼠装配线 252


30.7 小结 256


实验:remove-identical.go 256


实验:split-words.go 256


第31章 并发状态 257


31.1 互斥锁 258


31.2 长时间运行的工作进程 262


31.3 小结 267


实验:positionworker.go 268


实验:rover.go 268


第32章 单元实验:寻找火星生命 269


32.1 可供活动的网格 269


32.2 报告发现 270


结语:何去何从 273


习题答案(网上下载)



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4