书籍作者:[美] 杰伊·麦克格瑞恩 | ISBN:9787111664932 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:8899 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
Go是为高性能网络和多处理而设计的, 但与python和javascript一样,该语言易于阅读和使用。通过这本实用的实践指南,读者将学习如何使用演示实际语言的清晰示例来编写Go代码。*重要的是,读者将会了解到用人单位希望入门级Go开发人员所知晓的惯例和技术。主要内容包括语法基础、条件和循环、函数、包、数组、映射、结构、封装和嵌入、接口、故障恢复、共享、自动化测试、Web应用程序等。
欺骗你的大脑,让它认为你的生活依赖于如何用Go编程呢?
我真不敢相信他们 把这个写进了一本 Go语言的书中。
你的大脑如何看待Go。 在这里,你试图学习一些东西,而你的大脑在帮 你的忙,确保学习不会停滞不前。你的大脑在想:“最好给更重要的事情留点 儿空间,比如避开哪些野生动物,裸体滑雪是否是个坏主意。”那么,你如何在本节中,我们将回答一个急待解决的问题:为什么他们 要把这个写进一本关于Go的书里呢?
给谁看这本书
这本书是给谁看的
如果你对所有这些问题回答“是”:
1 你能使用有文本编辑器的电脑吗?
2 你想学习一种使开发变得快速和高效的编程语言吗?
3 比起枯燥无味的学术讲座,你是否更喜欢让人刺激的晚宴上的交谈?
那么这本书是给你看的。
谁应该远离这本书
如果你对其中任何一个问题回答“是”:
1 你对电脑完全陌生吗?
(你不需要水平太高,但是你应该了解文件夹和文件,知 道如何打开终端应用,以及如何使用简单的文本编辑 器。)
2 你是一个在寻找参考书的忍者摇滚明星的开发者吗?
3 你害怕尝试新的东西吗?你宁愿做根管治疗,也不愿意 穿一些色彩斑斓的衣服吗?你真的认为一本技术性的书 如果使用了比较轻松的语言就很不严肃吗?
那么这本书就不是给你看的。
来自市场营销的提示:本书适用于任 何持有有效信用卡的人。
如何使用这本书
我们知道你在想什么
“这本书怎么可能是一本关于用Go进行开发的非常严肃的书呢?” “这些图形是怎么回事?”
“我真的能这样学吗?”
我们知道你的大脑在想什么
你的大脑渴望新奇。它总是在搜索、扫描、等待一些不寻常的东西。 它就是这样建造的,它能帮助你活着。
那么,你的大脑如何处理你遇到的所有日常的、普通的、正常的事情 呢? 尽一切可能阻止它们干扰大脑真正的工作 —— 记录重要的事情。 它不会保存那些无聊的东西,因为它们永远不会通过“这显然不重要”
过滤器。
你的大脑如何知道什么事情是重要的? 假设你出去徒步一天,一只老
虎在你面前跳来跳去——你的大脑和身体会怎么样? 神经元被激活。情绪高涨。化学物质激增。 你的大脑就是这样知道......
这一定很重要!别忘记!
但3是想象一下你在家里或者在图书馆。这是一个安全、温暖、没有老 虎的地方。你在学习,准备考试,或者尝试学习一些很难的技术主题, 你老板认为这些东西需要一周,最多10天就可完成。
只有一个问题。你的大脑想帮你个大忙。它试图确保这些显然不 重要的内容不会扰乱稀缺的资源。资源最好用于存储真正“大” 的东西,比如老虎,比如火灾的危险,比如你不应该把那些派对 的照片上传到你的Facebook上。没有简单的方法告诉你的大脑,
“嘿,大脑,非常感谢你,但是不管这本书有多枯燥,不管我现在 的情绪有多糟糕,我真的希望你能保留这些东西。”
太好了。只有530页枯燥、无趣、乏味的东西了。
把读者当作学习者
你的大脑认为 这很重要。
你的大脑认为 这不值得保留。
我们把“Head First”的读者当作学习者
那么怎样才能学到一些东西呢? 首先,你必须得到它,然后确保你不会忘记它。这不是把事 情硬塞进你的脑子里。根据认知科学、神经生物学和教育心理学方面的最新研究,学习不仅 仅是了解纸面上的文字。我们知道什么可以使你的大脑兴奋。
一些“Head First”的学习准则:
可视化知识。图像远比文字更令人印象深刻,也使学习变得更加有效。(在回忆和转移研 究方面提高了89%。)它们也能让事情变得更容易理解。将词语放在与之相关的图形内或 附近,而不是放在底部或另一页上,学习者解决与内容相关的问题的可能性将提高两倍。
使用对话和个性化的风格。最近研究表明,如果内容直接面向读者,使用第一人称的对话 风格,而不是使用正式的语气,那么读者在学习后的测试中的表现可以提高40%。讲故事 而不是说教。使用非正式的语言,不要太严肃。你会更关注一个令人兴奋的晚宴,还是一 个讲座?
让学习者更深入地思考。换句话说,除非你主动弯曲你的神经元,否则你的大脑不会发生 什么变化。读者必须有动力、投入、好奇和灵感去解决问题,得出结论并产生新的知识。 为此,你需要挑战、锻炼和发人深省的问题,以及涉及大脑两侧和多种感官的活动。
吸引并保持读者的注意力。我们都有过“我真的很想学这个,但我不能在读完第一页后还 保持清醒”的经历。你的大脑会关注那些不寻常的、有趣的、奇怪的、引人注目的、意想 不到的事情。学习一个新的、棘手的、技术性的主题不一定很无聊。如果有趣的话,你的 大脑会学得更快。
调动读者的情绪。我们现在知道,你的记忆事物的能力很大程度上取决于事物的情感内容。
当你关注时你会记得,当你有感触时你会记得。不,我们不是在讲一个男孩和他的狗的令 人心痛的故事。我们谈论的是诸如惊喜、好奇、乐趣之类的情感,“什么......?”,以及 那种“我说了算!”的感受,当你解决了一个难题,掌握了别人认为很难的东西,或者意识到“我更了解技术”,而来自工程学的鲍勃却不会时,就会有这种感受。
如何使用这本书
元认知:思考“何为思考” 如果你真的想学
目录 (概要)
如何使用这本书:前言 xxvii
1 让我们开始吧:语法基础 1
2 接下来运行哪些代码:条件和循环 31
3 调用:函数 79
4 代码集:包 113
5 列表:数组 149
6 追加的问题:切片 175
7 标签数据:映射 205
8 构建存储:struct 231
9 我喜欢的类型:定义类型 265
10 保密:封装和嵌入 289
11 你能做什么:接口 321
12 重新站起来:从失败中恢复 349
13 分享工作:goroutine和 channel 379
14 代码的质量保证:自动化测试 401
15 响应请求:Web应用程序 425
16 要遵循的模式:HTML模板 445
A 理解os.OpenFile:打开文件 481
B 有六件事我们没有涉及:剩下的内容 495
目录 (真正的目录)
如何使用这本书
前言
你的大脑如何看待Go。在这里,你试图学习一些东西,而你的大脑 在帮你的忙,确保学习不会停滞不前。你的大脑在想:“最好给更重要的 事情留点儿空间,比如避开哪些野生动物,裸体滑雪是否是个坏主意。” 那么,你如何欺骗你的大脑,让它认为你的生活依赖于如何用Go编程呢?
这本书是给谁看的 xxviii
我们知道你在想什么 xxix
我们知道你的大脑在想什么 xxix
元认知:思考“何为思考” xxxi
我们是这样做的 xxxii
说明 xxxiv
致谢 xxxv
1让我们开始吧 语法基础
准备好给你的软件充电了吗?你想要一种编译速度快的简单编程语言吗?它跑 得快吗?它可以很容易地将你的工作分发给用户吗?那就准备好学习Go吧!
Go是一种注重简单性和速度的编程语言。它比其他语言都简单,所以学起来更快。它 可以让你利用当今多核计算机处理器的能力,使你的程序运行得更快。本章将向你展 示所有Go的功能,这些功能将使你作为开发人员的生活更轻松,并使你的用户更快乐。
准备好,出发 2
Go Playground 3
这一切意味着什么 4
如果出了问题怎么办 5
调用函数 7
Println函数 7
使用其他包中的函数 8
函数返回值 9
Go程序模板 11
字符串 11
符文 12
布尔值 12
数字 13
数学运算与比较 13
类型 14
声明变量 16
零值 17
短变量声明 19
命名规则 21
转换 22
在你的计算机上安装Go 25
编译Go代码 26
Go工具 27
使用“go run”快速尝试代码 27
你的Go 工具箱 28
package main import "fmt" func main() {
}
fmt.Println( )
"Hello, Go!"
Hello, Go!
1+ 2
true
3
4 viii
'?'
1174 输出
2 接下来运行哪些代码
条件和循环
每个程序都有仅在特定情况下适用的部分。“如果出现错误,应该运行 这段代码。否则,应该运行其他代码。”几乎每个程序都包含只有在特定条件为真时才 应该运行的代码。因此,几乎每种编程语言都提供条件语句,让你决定是否运行某段代 码。Go也不例外。
你可能还需要重复运行代码中的某些部分。与大多数语言一样,Go提供了循环, 可以多次运行某部分代码。在本章中,我们将学习使用条件句和循环!
调用方法 32
评分 34
函数或方法的多个返回值 36
选项1:使用空白标识符忽略错误返回值 37
选项2:处理错误 38
条件 39
有条件地记录致命错误 42
避免遮盖名字 44
将字符串转换为数字 46
块 49
块和变量的作用域 50
我们已经完成了评分程序 52
短变量声明中只有一个变量必须是新的 54
让我们创建一个游戏 55
包名与导入路径 56
生成随机数 57
从键盘获取整数 59
将猜测与目标进行比较 60
循环 61
初始化和标志(post)语句是可选的 63
在我们的猜谜游戏中使用循环 66
中断我们的猜测循环 69
显示目标 70
恭喜你,游戏结束了 72
你的Go工具箱 74
条件语句块 结束
条件语句块 开始
条件语句块主体
“if”关键字
条件
if 1fmt.Println("It's true!")
}
3 调用
函数
你错过了机会。你一直像专业人士一样调用函数。但你唯一能调用的函数是 Go为你定义的函数。现在,轮到你了。我们将向你展示如何创建你自己的函数。 我们将学习如何声明带参数和不带参数的函数。我们将声明返回单个值的函数, 并且我们将学习如何返回多个值,以便我们可以指示何时发生了错误。我们还将 学习指针,它允许我们进行更有效的内存函数的调用。
一些重复的代码 80
使用Printf和Sprintf格式化输出 81
格式化动词 82
格式化值宽度 83
格式化小数宽度 84
在油漆计算器中使用Printf 85
声明函数 86
声明函数参数 87
在油漆计算器中使用函数 88
函数和变量的作用域 90
函数返回值 91
在油漆计算器中使用返回值 93
paintNeeded函数需要错误处理 95
错误值 96
声明多个返回值 97
在paintNeeded函数中使用多个返回值 98
始终处理错误 99
函数形参接收实参的副本 102
指针 103
指针类型 104
获取或更改指针的值 105
函数指针 107
使用指针修复我们的“double”函数 108
你的Go工具箱 110
4 代码集
包
是时候整理一下了。到目前为止,我们一直将所有代码放在一个文件中。 随着我们的程序变得越来越大、越来越复杂,这很快就会变得一团糟。
在本章中,我们将向你展示如何创建自己的包,以帮助将相关代码集中放在 一个地方。但是包不仅仅对组织结构有益,它还是在程序之间共享代码的一种简单方法,同时也是与其他开发人员共享代码的一种简单方法。
不同的程序,相同的函数 114
使用包在程序之间共享代码 116
Go工作区目录保存包代码 117
创建一个新包 118
将包导入程序 119
包使用相同的文件布局 120
包命名规范 123
包限定符 123
将共享代码移动到包中 124
常量 126
嵌套的包目录和导入路径 128
使用“go install”安装程序可执行文件 130
使用GOPATH环境变量更改工作区 131
设置GOPATH 132
发布包 133
使用“go get”下载和安装包 137
使用“go doc”阅读包文档 139
使用doc注释记录包 141
在Web浏览器中查看文档 143
使用“godoc”提供HTML文档 144
“godoc”服务器包含你的包 145
你的Go工具箱 146
go
bin
hi pkg
src
greeting
greeting.go hi
main.go
5 列表
数组
很多程序都处理列表。地址列表、电话号码列表、产品列表。Go有两种内置 的存储列表的方法。本章将介绍第一种:数组。你将了解如何创建数组,如何用数 据填充数组,以及如何重新获取这些数据。然后你将学习如何处理数组中的所有元 素,首先是使用for循环的困难些的方法,然后是使用for...range循环的简单 些的方法。
数组保存值的集合 150
数组中的零值 152
数组字面量 153
“fmt”包中的函数知道如何处理数组 154
在循环里访问数组元素 155
使用“len”函数检查数组长度 156
使用“for ... range”安全遍历数组 157
在“for ... range”循环中使用空白标识符 158
得到数组中数字之和 159
得到数组中数字的平均值 161
读取文本文件 163
将文本文件读入数组 166
更新我们的“average”程序来读取文本文件 168
我们的程序只能处理三个值 170
你的Go工具箱 172
数组中将要存储的元素类型
数组中将要存储的元素个数
var myArray [4]string
索引0
索引1
索引2
索引3
6 追加的问题
切片
我们已经知道了无法将更多的元素增加到一个数组中。对于程序的确是个问题。因为我们无法提前知道文件中包含多少个块。而这就是Go中的切片 (slice)的用武之地。切片是一个可以通过增长来保存额外数据的集合类型,正好能够满足程序的需要!我们将看到切片是如何让用户以简洁的方式在程序中提供 数据的,以及如何帮助你写出更加方便调用的函数。
切片 176
切片字面量 177
切片运算符 180
底层数组 182
修改底层数组,修改切片 183
使用“append”函数在切片上添加数据 184
切片和零值 186
使用切片和“append”读取额外的文件行 187
尝试我们改进后的程序 189
出错时返回nil值切片 190
命令行参数 191
从os.Args切片获取命令行参数 192
切片运算符可用于其他切片 193
更新程序以使用命令行参数 194
可变长参数函数 195
使用可变长参数函数 197
使用可变长参数函数计算平均值 198
向可变长参数函数传递一个切片 199
切片拯救了我们 201
你的Go工具箱 202
切片
底层数组
数组1
切片1
{"a", "b", "c", "d", "e"}
7 标签数据
映射
堆积物品是个好方法,直到你需要再次找到它。你已经看到了如何使用 切片和数组来创建一列数据。但是当你需要使用一个特定的值时会怎样?为了找 到它,你需要从数组或者切片的开头开始,查看每一个元素。
如果有一种集合,其中的每个值都有个标签在上面,那么你就可以快速找到你需 要的值!在这一章,我们来看映射,它就是做这个的。
计票 206
从文件中读取名字 207
使用困难的切片方法对名字计数 209
映射 212
映射字面量 214
映射中的零值 215
映射变量的零值是nil 215
如何区分已经赋值的值和零值 216
使用“delete”函数删除键/值对 218
使用映射来更新计票程序 219
对映射进行for ... range循环 221
for ... range循环以随机顺序处理映射 223
使用for ... range循环来更新计票程序 224
计票程序完成 225
你的Go工具箱 227
Carlos Diaz
Amber Graham Brian Martin
Mikey Moose
键可以使你快速 找到数据!
8 构建存储
struct
有时你需要保存超过一种类型的数据。我们学习了切片,它能够保存 一组数据。然后学习了映射,它能保存一组键和一组值。这两种数据结构都只 能保存一种类型。有时,你需要一组不同类型的数据,例如邮件地址,混合了 街道名(字符串类型)和邮政编码(整型);又如学生记录,混合保存学生名 字和成绩(浮点数)。你无法用切片或者映射来保存。但是你可以使用其他的名为struct的类型来保存。本章会介绍struct的所有信息!
切片和映射保存一种类型的值 232
struct是由多种类型的值构建的 233
使用点运算符访问struct字段 234
在struct中保存订阅者的数据 235
定义类型和struct 236
为杂志订阅者定义一个类型 238
与函数一起使用已定义类型 239
使用函数修改struct 242
通过指针访问struct的字段 244
使用指针传递大型struct 246
将struct类型移动到另一个包 248
定义类型的名称首字母必须大写才能导出该类型 249
struct字段的
你大男大女你大男大女妇女给你烦恼烦恼烦恼大男大女你打打闹闹的你打打闹闹大男大女你大男大女大男大女难道呢
2020-10-31 08:57:05
非常好,这是第三本head first了。
2020-10-29 21:35:08