![]()
内容推荐 《Go语言趣学指南》是一本面向Go语言初学者的书,循序渐进地介绍了使用Go语言所必需的知识,展示了很好多生动有趣的例子,并通过提供大量练习来加深读者对书中所述内容的理解。本书共分8个单元,分别介绍变量、常量、分支和循环等基础语句,整数、浮点数和字符串等常用类型,类型、函数和方法,数组、切片和映射,结构和接口,指针、nil和错误处理方法,并发和状态保护,并且每个单元都包含相应的章节和单元测试。 《Go语言趣学指南》适合对初学Go语言有不同需求的程序员阅读。无论是刚开始学习Go语言的新手,还是想要回顾Go语言基础知识的Go语言使用者,只要是想用Go做开发,无论是开发小型脚本还是大型程序,《Go语言趣学指南》都会很好有帮助。 目录 第0单元入门 章各就各位,预备,Go!3 1.1什么是Go4 1.2GoPlayground6 1.3包和函数7 1.4唯一允许的大括号放置风格8 1.5小结9 实验:playground.go10 单元命令式编程 第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.go21 第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.go32 第4章变量作用域33 4.1审视作用域34 4.2简短声明35 4.3作用域的范围37 4.4小结39 实验:random-dates.go39 第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.go52 第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.go62 第8章大数63 8.1击中天花板63 8.2big包65 8.3大小非同寻常的常量66 8.4小结68 实验:cains.go68 第9章多语言文本69 9.1声明字符串变量70 9.2字符、代码点、符文和字节71 9.3拉弦73 9.4使用凯撒加密法处理字符73 9.5将字符串解码为符文76 9.6小结77 实验:caesar.go78 实验:international.go78 0章类型转换79 10.1类型不能混合使用79 10.2数字类型转换81 10.3类型转换的危险之处82 10.4字符串转换83 10.5转换布尔值85 10.6小结86 实验:input.go86 1章单元实验:维吉尼亚加密法87 实验:decipher.go88 实验:cipher.go89 第3单元构建块 2章函数93 12.1函数声明94 12.2编写函数97 12.3小结99 实验:functions.go99 3章方法100 13.1声明新类型101 13.2引入自定义类型102 13.3通过方法为类型添加行为103 13.4小结105 实验:methods.go106 4章一等函数107 14.1将函数赋值给变量108 14.2将函数传递给其他函数109 14.3声明函数类型110 14.4闭包和匿名函数111 14.5小结113 实验:calibrate.go114 5章单元实验:温度表115 第4单元收集器 6章劳苦功高的数组119 16.1声明数组并访问其元素119 16.2小心越界121 16.3使用复合字面量初始化数组121 16.4迭代数组122 16.5数组被复制123 16.6由数组组成的数组125 16.7小结125 实验:chess.go126 7章切片:指向数组的窗口127 17.1切分数组128 17.2切片的复合字面量130 17.3切片的威力130 17.4带有方法的切片132 17.5小结133 实验:terraform.go133 8章更大的切片134 18.1append函数134 18.2长度和容量135 18.3详解append函数136 18.4三索引切分操作137 18.5使用make函数对切片实行预分配138 18.6声明可变参数函数139 18.7小结140 实验:capacity.go140 9章无所不能的映射141 19.1声明映射142 19.2映射不会被复制143 19.3使用make函数对映射实行预分配144 19.4使用映射进行计数145 19.5使用映射和切片实现数据分组146 19.6将映射用作集合147 19.7小结148 实验:words.go148 第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将结构编码为JSON162 21.7使用结构标签定制JSON164 21.8小结165 实验:landing.go165 第22章Go没有类166 22.1将方法绑定到结构166 22.2构造函数168 22.3类的替代品169 22.4小结171 实验:landing.go171 实验:distance.go171 第23章组合与转发173 23.1合并结构174 23.2实现自动的转发方法176 23.3命名冲突178 23.4小结180 实验:gps.go180 第24章接口181 24.1接口类型182 24.2探索接口185 24.3满足接口187 24.4小结189 实验:marshal.go189 第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.go211 第27章关于nil的纷纷扰扰212 27.1通向惊恐的nil指针213 27.2保护你的方法214 27.3nil函数值216 27.4nil切片217 27.5nil映射218 27.6nil接口218 27.7nil之外的另一个选择219 27.8小结220 实验:knights.go221 第28章孰能无过222 28.1处理错误223 28.2优雅的错误处理224 28.2.1文件写入225 28.2.2关键字defer227 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.go238 第29章单元实验:数独规则239 第7单元并发编程 第30章goroutine和并发243 30.1启动goroutine244 30.2不止一个goroutine245 30.3通道247 30.4使用select处理多个通道249 30.5阻塞和死锁251 30.6地鼠装配线252 30.7小结256 实验:remove-identical.go256 实验:split-words.go256 第31章并发状态257 31.1互斥锁258 31.2长时间运行的工作进程262 31.3小结267 实验:positionworker.go268 实验:rover.go268 第32章单元实验:寻找火星生命269 32.1可供活动的网格269 32.2报告发现270 结语:何去何从273 |