Go职场

Go职场
作 者: 海瑟姆·巴尔蒂金伯利·A 韦斯 殷海英
出版社: 清华大学出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Haythem Balti博士是Wiley Edge的副院长。他创建了许多门课程,供数千个软件协会和Wiley Edge(前身为mthree)校友使用,以学习SQL、Go、Java、Python和其他编程语言及数据科学技能。Kimberly A. Weiss是Wiley Edge课程运营的高级经理。她与多所大学以及企业培训机构合作,针对软件开发课程为学员设计成功的交互式教学案例。

内容简介

主要内容● 如何配置Go语言环境,并提供设计、开发和测试Go应用程序的入门指南。● 对基本数据结构(如映射、切片和数组)的实际讨论。● gRPC和并发的基本原理。● 在Go语言中设计和开发API的基础知识。

图书目录

第I部分 Go编程语言的基础知识

第1课 初识Go语言 2

1.1 安装Go 2

1.1.1 下载安装文件 3

1.1.2 开始安装Go 4

1.2 对安装结果进行测试 6

1.3 创建Hello, World!程序 8

1.3.1 编译并运行程序 9

1.3.2 其他运行方法 10

1.3.3 调试Hello,World!程序 11

1.3.4 格式化Go代码 12

1.4 安装多个版本的Go 13

1.5 Go的在线编辑器:Go Playground 13

1.6 本课小结 14

1.7 本课练习 15

第2课 Go语言基础 17

2.1 理解语句和标记 17

2.2 语句 18

2.3 注释 20

2.3.1 单行注释 20

2.3.2 块注释或多行注释 22

2.4 标识符 22

2.4.1 大小写 24

2.4.2 命名约定 25

2.5 关键字 26

2.6 本课小结 27

2.7 本课练习 27

第3课 使用变量 31

3.1 变量 31

3.1.1 命名变量 33

3.1.2 声明和初始化变量 33

3.2 静态和动态类型声明 35

3.2.1 混合声明类型 37

3.2.2 在单条语句中混合类型声明 38

3.3 变量作用域 39

3.4 获取用户输入 40

3.4.1 内存地址 40

3.4.2 扫描值 41

3.5 将字符串转换为数字 43

3.6 数值数据类型 46

3.6.1 独立于体系结构的整数类型 47

3.6.2 超出范围的值 49

3.6.3 特定于实现的整数类型 49

3.6.4 浮点类型 50

3.7 本课小结 52

3.8 本课练习 52

第4课 执行运算 55

4.1 算术运算 55

4.1.1 混合数字类型 57

4.1.2 数字类型转换 59

4.1.3 PEMDAS运算规则 60

4.2 赋值运算 62

4.2.1 加法和减法赋值运算 63

4.2.2 乘法、除法和求模赋值运算 64

4.3 使用布尔值 65

4.4 关系运算 66

4.4.1 为布尔变量赋值 67

4.4.2 在关系运算中使用不匹配的类型 68

4.5 布尔运算 69

4.6 数学函数 70

4.7 位运算 72

4.8 随机数 73

4.8.1 限制值的范围 74

4.8.2 随机数生成器中的种子 75

4.9 本课小结 76

4.10 本课练习 76

第5课 用条件语句控制程序流程 80

5.1 条件语句 80

5.2 使用if语句 81

5.3 使用多个条件 83

5.4 使用if-else语句 85

5.5 创建嵌套的if语句 86

5.6 使用switch语句 88

5.6.1 使用fallthrough执行多个case 90

5.6.2 在一个case中使用多个表达式 92

5.6.3 在case中使用条件语句 93

5.7 本课小结 94

5.8 本课练习 95

第6课 用循环控制程序流程 99

6.1 循环语句 99

6.2 for循环 101

6.2.1 for循环中的可选项 103

6.2.2 Go中的while语句 104

6.2.3 无限循环 106

6.3 遍历字符串 107

6.4 range函数 108

6.5 循环控制语句 109

6.5.1 break语句 110

6.5.2 continue语句 111

6.5.3 goto语句 112

6.6 本课小结 113

6.7 本课练习 113

第7课 综合练习:个税计算器 118

7.1 准备工作 119

7.2 第一步:收集需求 119

7.2.1 使用的值 119

7.2.2 用户界面 120

7.2.3 其他标准 120

7.3 第二步:设计程序 121

7.4 第三步:创建输入 121

7.5 第四步:计算应税收入 123

7.6 第五步:计算税率 124

7.6.1 添加条件语句 126

7.6.2 创建嵌套条件 128

7.7 第六步:更新应用程序 134

7.7.1 如何处理负的应税收入 136

7.7.2 核实代码 137

7.8 第七步:完善用户界面 138

7.9 自己动手实践 140

7.10 本课小结 141

第II部分 用Go组织代码和数据

第8课 使用函数 144

8.1 定义函数 144

8.1.1 使用多个函数 146

8.1.2 没有返回值的函数 147

8.1.3 带有多个返回值的函数 148

8.2 变长函数 152

8.3 递归 153

8.4 将函数作为值 154

8.5 闭包 155

8.6 本课小结 157

8.7 本课练习 157

第9课 访问数组 160

9.1 声明数组 161

9.1.1 给数组元素赋值 161

9.1.2 数组的基本规则 163

9.1.3 数组元素和变量的相似性 164

9.2 对数组进行声明和初始化 166

9.3 推断数组大小 167

9.4 使用for循环填充数组 168

9.5 在数组中使用range 169

9.6 创建多维数组 170

9.7 复制数组 171

9.8 比较数组 172

9.9 本课小结 174

9.10 本课练习 174

第10课 使用指针 177

10.1 创建指针 177

10.1.1 初始化指针 179

10.1.2 声明和初始化指针 179

10.1.3 使用动态类型 180

10.1.4 不同类型的指针 181

10.2 通过指针访问变量值 183

10.3 了解nil指针 184

10.4 使用指针改变变量值 185

10.5 比较指针 186

10.6 使用指针数组 187

10.7 在函数中使用指针 189

10.8 本课小结 191

10.9 本课练习 191

第11课 使用结构体 195

11.1 声明和初始化结构体 195

11.1.1 从结构体中获取值 197

11.1.2 在声明结构体变量时对它进行初始化 198

11.1.3 使用短赋值运算符 198

11.2 在结构体中使用键值对 199

11.3 使用new关键字 201

11.4 指针和结构体 203

11.5 嵌套结构体 204

11.6 向结构体中添加方法 206

11.7 类型和值 208

11.8 对结构体进行比较 209

11.9 本课小结 211

11.10 本课练习 211

第12课 访问切片 216

12.1 切片的工作原理 216

12.2 对数组进行切片 217

12.2.1 使用len和cap 219

12.2.2 使用快捷方式 220

12.3 改变切片的大小 221

12.4 对切片进行迭代 222

12.5 make函数 223

12.6 使用var创建切片变量 224

12.7 处理切片元素 225

12.7.1 替换切片中的元素 225

12.7.2 使用空切片 226

12.7.3 使用切片的部分元素 227

12.7.4 在切片中使用range 228

12.8 使用append函数向切片追加值 229

12.9 复制切片 230

12.10 使用new关键字创建切片 231

12.11 从切片中删除元素 232

12.12 本课小结 234

12.13 本课练习 234

第13课 操作映射 237

13.1 定义映射 237

13.1.1 维护类型 239

13.1.2 重复的键 240

13.2 空映射 240

13.3 使用make创建映射 242

13.4 映射的长度 243

13.5 检索映射元素 244

13.6 检查映射中的键 245

13.7 遍历映射 246

13.8 从映射中删除元素 247

13.9 使用字面值声明映射 249

13.10 本课小结 250

13.11 本课练习 250

第14课 创建方法 253

14.1 使用方法 253

14.2 定义方法 255

14.3 在方法中使用指针 256

14.4 命名方法 260

14.5 使用值接收器和参数 261

14.6 使用指针接收器和参数 263

14.7 本课小结 266

14.8 本课练习 266

第15课 添加接口 271

15.1 创建接口 271

15.2 接口和代码可重用性 274

15.3 静态和动态接口类型 275

15.4 空接口 277

15.5 检查接口类型 277

15.6 多接口 279

15.7 嵌入式接口 282

15.8 本课小结 283

15.9 本课练习 284

第16课 综合练习:汉堡店应用程序 286

16.1 应用程序需求 286

16.2 代码设计 287

16.3 创建结构体 288

16.3.1 创建burger结构体 288

16.3.2 创建drink结构体 291

16.3.3 创建side结构体 293

16.3.4 创建combo结构体 295

16.3.5 创建order结构体 296

16.4 创建辅助函数 298

16.4.1 买汉堡 300

16.4.2 买配餐 301

16.4.3 买饮料 301

16.4.4 买套餐 302

16.5 整合代码 303

16.6 本课小结 305

16.7 完整的汉堡店应用程序 306

第III部分 用Go创建解决方案

第17课 错误处理 314

17.1 Go程序中的错误 314

17.2 Go中的error类型 315

17.3 自定义错误处理 317

17.4 错误方法 318

17.5 Errorf函数 320

17.6 空标识符 321

17.7 用结构体表示错误消息 322

17.8 多个自定义错误消息 323

17.9 本课小结 326

17.10 本课练习 326

第18课 并发 328

18.1 使用并发 328

18.1.1 操作系统的角色 329

18.1.2 并发带来的问题 330

18.1.3 互斥 331

18.2 并行 332

18.2.1 实现并行 333

18.2.2 防止由并行引发的问题 334

18.3 使用协程 334

18.4 多协程 336

18.5 使用通道 339

18.5.1 使用make创建通道 340

18.5.2 通道和并发 340

18.5.3 添加延迟 341

18.6 具有多个协程的通道 342

18.7 关闭通道 344

18.8 迭代通道 345

18.9 本课小结 347

18.10 本课练习 347

第19课 排序和数据处理 349

19.1 排序 349

19.1.1 检查排序后的值 351

19.1.2 自定义排序函数 352

19.1.3 改变排序顺序 354

19.2 时间和日期操作 355

19.2.1 定义时间 357

19.2.2 比较时间 358

19.2.3 时间计算 360

19.2.4 解析时间 366

19.2.5 使用UNIX时间 368

19.2.6 格式化标准时间 369

19.3 正则表达式 369

19.4 本课小结 372

19.5 本课练习 372

第20课 文件I/O和OS操作 377

20.1 读取文件 377

20.1.1 panic函数 379

20.1.2 读取文件的一部分 380

20.1.3 defer语句 382

20.1.4 从特定的起点读取文件 382

20.1.5 缓冲读取器 384

20.1.6 按行读取文件 385

20.2 向文件写入数据 387

20.2.1 创建新文件 388

20.2.2 缓冲写入器 390

20.3 使用目录 391

20.3.1 创建目录 392

20.3.2 删除目录 393

20.3.3 创建目录树 393

20.3.4 列出目录内容 394

20.3.5 更改目录 395

20.3.6 临时文件和临时目录 397

20.4 命令行参数 399

20.5 本课小结 400

20.6 本课练习 400

第21课 综合练习:Go语言中的单词分析 403

21.1 检查数据 403

21.2 读取评论数据 405

21.3 对输入字符串进行分词 413

21.3.1 识别标点符号并使用空格进行替换 414

21.3.2 将输入文本转换为小写 415

21.3.3 将字符串分割为单词 416

21.4 创建一个分词函数 417

21.4.1 对评论内容进行分词 418

21.4.2 对整个数据集进行分词 419

21.5 对每条评论中的单词进行计数 419

21.6 对评论进行分词并计数 420

21.7 改进设计 423

21.7.1 改进1:优化结构体 423

21.7.2 改进2:添加自定义错误和异常处理 428

21.7.3 改进3:优化分词 430

21.7.4 改进4:优化单词计数 431

21.8 进一步的改进 433

21.9 最终代码清单 433

21.10 本课小结 436

第IV部分 Go开发的高级主题

第22课 测试 438

22.1 测试驱动开发 438

22.2 测试级别 439

22.3 TDD工作流 440

22.3.1 TDD过程 440

22.3.2 TDD的优点 441

22.4 测试包 441

22.4.1 创建程序 442

22.4.2 编写测试 442

22.4.3 运行测试 444

22.5 教程:测试驱动开发 445

22.5.1 第一个测试:美元金额的字符串表示 445

22.5.2 第二个测试:使用其他值进行测试 447

22.5.3 第三个测试:运算并输出结果 450

22.5.4 对测试进行检查 454

22.5.5 第四个测试:包含减法 456

22.5.6 最终测试:查看输入值 459

22.6 行为驱动开发 462

22.6.1 行为驱动开发的目标 462

22.6.2 避免失败 463

22.6.3 行为规范 464

22.6.4 定义用户故事 465

22.7 本课小结 466

22.8 本课练习 466

第23课 API开发教程 467

23.1 概述和要求 467

23.2 第一步:创建数据集和一个简单的API 468

23.2.1 定义数据集 469

23.2.2 homePage函数 469

23.2.3 返回处理程序 470

23.2.4 对传入的请求进行处理和路由 470

23.2.5 添加数据 471

23.2.6 执行请求处理程序 472

23.2.7 运行程序 473

23.3 第二步:添加Gorilla Mux路由器 475

23.4 第三步:检索记录 478

23.4.1 检索特定记录 478

23.4.2 对更新进行测试 479

23.5 第四步:添加新记录 481

23.6 第五步:删除记录 486

23.7 本课小结 490

23.8 本课练习 490

第24课 使用gRPC 492

24.1 使用gRPC 492

24.2 设置服务 493

24.2.1 Git 493

24.2.2 gRPC 494

24.2.3 Protobuf 494

24.2.4 protoc 495

24.2.5 用户目录 495

24.3 创建服务器 496

24.4 创建gRPC服务器 497

24.5 创建聊天服务 498

24.6 更新服务器代码以添加聊天服务 499

24.7 创建chat包 500

24.8 创建客户端 501

24.9 运行服务器和客户端 503

24.10 本课小结 503

24.11 本课练习 504

第25课 综合练习:使用智能数据 505

25.1 项目概要 505

25.2 设计我们的API 506

25.3 实现gRPC服务器 508

25.3.1 地理位置服务器外壳 509

25.3.2 金融服务器外壳 517

25.4 创建API 529

25.4.1 实现getGeoLocationData端点 531

25.4.2 实现getQuote端点 532

25.4.3 更新api.go文件 533

25.5 本课小结 537

第26课 使用模块 538

26.1 开始使用模块 538

26.2 第一步:创建项目目录 538

26.3 第二步:创建程序 539

26.4 第三步:创建测试程序 540

26.5 第四步:创建go.mod文件 540

26.6 第五步:对模块进行测试 541

26.7 第六步:使用模块 541

26.8 命名模块函数 541

26.9 本课小结 542

26.10 本课练习 542

附录A 文件权限和访问权限 544