《用Go语言开发命令行程序》[73M]百度网盘|pdf下载|亲测有效
《用Go语言开发命令行程序》[73M]百度网盘|pdf下载|亲测有效
《用Go语言开发命令行程序》[73M]百度网盘|pdf下载|亲测有效

用Go语言开发命令行程序 pdf下载

isbn:9787577206370
出版社 华中科技大学出版社
出版年 2024-07-01
页数 496页
ISBN 9787577206370
装帧 精装
评分 9.4(豆瓣)
限时特惠 00:00:00
活动结束后恢复原价
纸质书参考价 ¥23
电子版限时价 ¥5.99 省 18 元

选择版本

不满意全额退款
发货失败双倍赔偿
邮箱即时发送

内容简介

本篇主要提供用Go语言开发命令行程序电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

编辑推荐

美国亚马逊五星图书。谷歌首席技术专家作序推荐。第一本用Go语言开发命令行程序的图书。

内容简介

无论是系统管理员、网络工程师、DevOps专家,还是普通程序员,工作中都需要借助命令行程序完成各种自动化任务,提高工作效率。
Go语言兼具静态语言的稳定性和动态语言的灵活性,加上开发效率高、类型安全、交叉编译、跨平台、易于测试等特性,尤其适合用来开发命令行程序。
本书带领读者利用Go语言丰富的标准库、原生的并发特性、以及灵活的语法开发10款命令行程序,包括执行自动化任务、分析数据、解析日志、处理网络服务等。借助Go语言内置的测试功能自动化地开展测试,确保程序的稳定性与可靠性。利用外部库(如Cobra)开发更强大的工具,与数据库、API、网络服务进行交互。本书内容由浅入深,书中所有示例都附有代码,只需掌握基本的Go语法和概念即可开始学习,尤其适合程序员、DevOps专家、系统管理员、网络工程师阅读学习。

作者简介

里卡多·杰拉尔迪(Ricardo Gerardi)有二十多年的软件开发经验,擅长解决IT自动化问题,他目前在企业开源解决方案供应商Red Hat加拿大分公司担任高级自动化顾问。他最近的研究兴趣是用Go语言解决各种项目问题。Ricardo Gerardi is an IT professional with over 20 years experience in large and small companies. He's currently working as Automation Consultant at Red Hat. Ricardo has been developing command line tools for a long time, for different purposes including automation, monitoring, and data analysis tools, and he has now adopted Go for all his projects.

目录

第 1 章 第一个Go语言命令行程序 ..... 1
1.1 构建简单的单词计数器 ..... 2
1.2 测试简单单词计数器 .... 4
1.3 添加命令行标志 ..... 6
1.4 编译成跨平台工具 .... 9
1.5 练习 ....... 10
1.6 小结 ....... 10

第 2 章 与用户交互 ....... 11
2.1 组织代码 ...... 12
2.2 定义待办事项API ...... 12
2.3 创建初始的待办事项命令行工具 ..... 21
2.4 测试这个初始的命令行实现 ... 24
2.5 处理多个命令行选项 ...... 28
2.6 显示命令行工具用法 ...... 34
2.7 改进列表输出格式 ...... 35
2.8 通过环境变量提高灵活性 .... 38
2.9 从STDIN捕获输入 .... 40
2.10 练习 ...... 45
2.11 小结 ...... 46

第 3 章 在Go中处理文件 ..... 47
3.1 创建基本Markdown预览工具 .... 48
3.2 为Markdown预览工具编写测试 ... 53
3.3 为Markdown预览工具添加临时文件 ... 58
3.4 使用接口实现自动化测试 .... 60
3.5 添加自动预览功能 ...... 64
3.6 清理临时文件 ...... 67
3.7 用模板改进Markdown预览工具 ... 71
3.8 练习 ....... 79
3.9 小结 ....... 80

第 4 章 浏览文件系统 ....... 81
4.1 开发一个文件系统遍历器 .... 82
4.2 使用表驱动测试进行测试 .... 87
4.3 删除匹配的文件 ..... 92
4.4 在测试助手的帮助下进行测试 .... 94
4.5 记录删除的文件 ..... 99
4.6 归档文件 ...... 106
4.7 练习 ..... 116
4.8 小结 ..... 116

第 5 章 提高CLI工具的性能 ...... 117
5.1 开发colStats的初始版本 .... 118
5.2 为colStats编写测试 .... 126
5.3 对工具进行基准测试 ..... 135
5.4 对工具进行性能分析 ..... 139
5.5 减少内存分配 ...... 144
5.6 对工具进行追踪 ..... 148
5.7 改进colStats工具以并发处理文件 ... 150
5.8 减少调度争用 ...... 158
5.9 练习 ..... 164
5.10 小结 ..... 164

第 6 章 控制进程 ....... 165
6.1 执行外部程序 ...... 166
6.2 错误处理 ...... 169
6.3 为Goci编写测试 ..... 171
6.4 定义管道 ...... 175
6.5 将另一个步骤添加到管道 .... 179
6.6 处理来自外部程序的输出 .... 181
6.7 使用上下文运行命令 .... 186
6.8 使用本地Git服务器进行集成测试 .... 192
6.9 使用模拟资源测试命令 ..... 197
6.10 处理信号 ....... 205
6.11 练习 ...... 212
6.12 小结 ...... 212

第 7 章 使用Cobra CLI框架 ...... 213
7.1 初始化Cobra应用程序 .... 214
7.2 浏览新的Cobra应用程序 ... 217
7.3 向应用程序添加第一个子命令 .... 220
7.4 从Scan包开始 .... 223
7.5 创建管理主机的子命令 ..... 231
7.6 测试管理主机的子命令 ..... 239
7.7 添加端口扫描功能 .... 247
7.8 使用Viper进行配置管理 .... 263
7.9 生成命令补全和文档 .... 267
7.10 练习 ...... 272
7.11 小结 ...... 272

第 8 章 使用REST API ....... 273
8.1 开发REST API服务器 ..... 274
8.2 测试REST API 服务器 ..... 280
8.3 完善REST API服务 ...... 284
8.4 为REST API开发简易客户端 ... 301
8.5 在不连接API的情况下测试客户端 .... 310
8.6 查看单个项目 ...... 316
8.7 添加一个项目 ...... 322
8.8 在本地测试HTTP请求 ..... 328
8.9 完成和删除项目 ..... 332
8.10 执行集成测试 ..... 339
8.11 练习 ...... 348
8.12 小结 ...... 348

第 9 章 开发交互式终端工具 ...... 349
9.1 初始化番茄钟应用程序 .... 350
9.2 用存储库模式存储数据 .... 359
9.3 测试番茄钟功能 ..... 363
9.4 构建界面小部件 ..... 373
9.5 组织界面的布局 ..... 386
9.6 构建交互式界面 ..... 389
9.7 用Cobra初始化CLI .... 394
9.8 练习 ..... 399
9.9 小结 ..... 400

第 10 章 将数据持久化到SQL数据库 .... 401
10.1 SQLite入门 ...... 403
10.2 Go、SQL和SQLite ..... 405
10.3 将数据持久化到数据库中 .... 406
10.4 使用SQLite测试存储库 ..... 418
10.5 在应用程序中使用SQLite存储库 .... 420
10.6 向用户显示摘要 ...... 423
10.7 练习 ...... 437
10.8 小结 ..... 438

第 11 章 分发工具 ...... 439
11.1 开发通知包 ..... 440
11.2 加入操作系统相关的数据 .... 442
11.3 在构建中加入操作系统相关的文件 ... 444
11.4 测试通知包 ..... 448
11.5 根据条件构建应用 ..... 454
11.6 交叉编译应用 ...... 460
11.7 编译适配容器的Go应用 .... 464
11.8 将应用以源代码形式发布 .... 470
11.9 练习 ...... 471
11.10 小结 ...... 472

精彩书摘

无论你是系统管理员、网络工程师、DevOps专家,还是任何其他现代IT专业人士,你都会使用命令行应用程序来实现自动化并提高生产效率。这些工具在基础架构中扮演着越来越重要的角色。在本书中,你将使用Go编程语言开发可维护、跨平台、快速且可靠的命令行应用程序。
Go是一种现代编程语言,它结合了编译过程提供的可靠性和动态类型的灵活性。Go的易用性和对新想法进行原型设计的灵活性使其成为编写命令行工具的最佳选择。同时,Go通过提供类型安全、交叉编译、测试和基准测试等功能和特性,允许实现更复杂的场景。
许多流行的命令行工具都是用Go开发的,包括Docker、Podman、Kubectl、Openshift CLI、Hugo和Terraform。如果你曾想过如何制作这类工具,这本书将帮助你。
你将运用Go的基本语法知识,并使用更高级的概念来开发命令行应用程序。你可以使用这些应用程序自动执行任务、分析数据、解析日志、与网络服务对话或满足其他系统要求。你还将使用不同的测试和基准测试技术来确保你的程序快速可靠。

前言/序言

第1章,开发一个单词计数器,快速了解用Go开发命令行应用程序的过程。你将从基本实现开始,增加一些功能,并尝试写测试。你还将添加命令行标志,为不同的平台构建应用程序。
第2章,设计并编写一个命令行工具,通过应用不同的技术,根据常见的标准输入/输出来管理待办事项列表。从标准输入(STDIN)流获取输入,解析命令行参数,并使用flags包为你的工具定义标志选项。使用环境变量来增加工具的灵活性。通过标准输出(STDOUT)流向用户显示信息和结果,并使用标准错误(STDERR)流显示错误以进行正确的错误处理。最后,将通过运用io.Reader接口来深入了解Go接口。
第3章,开发一个工具来使用Web浏览器预览Markdown文件。你将创建并打开用于读取和写入的文件。运用一些技术在不同操作系统之间一致地处理路径。使用临时文件并应用defer关键字来清理它们。还可以通过使用文件模板使你的工具更加灵活。最后,使用Go接口使你的代码更加灵活,同时编写和执行测试以确保代码符合要求。
第4章,浏览文件系统并处理目录和文件属性。开发一个CLI应用程序,根据不同的标准查找、删除和备份文件。执行常见的文件系统操作,如复制、压缩和删除文件。然后把信息输出到屏幕上或日志文件中。最后,应用表驱动测试和测试助手的概念,为应用程序编写灵活而有意义的测试案例。
第5章,开发一个命令行工具来处理来自CSV文件的数据。使用Go的基准测试、分析和跟踪工具来分析其性能、发现瓶颈并重新设计CLI以提高其性能。编写和执行测试以确保应用程序在整个重构过程中可靠地工作。还将应用Go的并发原语,例如goroutine和channel,以确保应用程序以安全的方式并发运行任务。
第6章,实现通过执行外部工具来扩展命令行应用程序的功能。你将执行、控制和捕获它们的输出,为你的Go程序开发一个持续集成工具。你将探索不同的方式来执行外部程序,有各种选项,如超时,确保程序不会永远运行。还将正确处理操作系统的信号,使工具能够优雅地关闭。
第7章,开发一个网络工具,通过应用Cobra CLI框架在远程计算机上执行TCP端口扫描。Cobra是一个流行的框架,允许你创建灵活的命令行工具,使用与POSIX 标准兼容的子命令。你将使用Cobra为你的应用程序生成模板代码,让你专注于其业务逻辑。
第8章,使用REST API改进待办事项程序。开发一个命令行客户端,该客户端使用多种HTTP方法与此API进行交互。解析JSON数据并微调特定的请求参数,例如Header和超时。你还将应用适当的测试技术,确保你的应用程序可靠地工作,而使Web服务器免于过载。
第9章,构建一个交互式命令行应用程序,该应用程序使用终端小部件与用户进行交互。你将使用外部包来设计和开发这个界面。还将应用不同的Go并发技术来开发这个异步应用程序。
第10章,在SQL数据库中保存数据,将通过允许用户将其数据保存到SQL数据库中来扩展交互式应用程序。使用Go的标准库和外部包连接到标准数据库。查询、插入和删除数据库中的数据,并使用本地SQLite3数据库持久化数据。你将使用应用程序界面汇总数据内容,从而使用户可以使用该数据。
第11章,探索几种构建工具的技术,包括不同的构建和交叉编译选项,从而使工具能够在多个操作系统中运行。通过构建标签,根据外部条件来改变构建的行为。你将快速了解如何使用CGO将C代码嵌入你的Go应用程序中。然后,你将应用技术将应用程序打包并以Linux容器或供go get使用的源代码形式发布。
本书并不涉及Go编程语言的基本语法。你应该熟悉变量的声明、类型、自定义类型、流程控制以及Go程序的一般结构。如果你刚开始学习Go,可以看看以下书籍和文章,它们很好地解释了该语言的语法:《Go语言学习指南:惯例模式与编程实践》《Go语言实战》《A Tour of Go》 《Effective Go》 。
本书尽可能使用Go标准库。Go有丰富的标准库,其中的包可以满足创建命令行工具的大部分需求。标准库兼容不同的版本,从而使更多的读者可以使用这些代码。在某些情况下,当没有可用的等效功能时,我们将使用外部包,但我通常更喜欢标准库,即使外部包可以更轻松地满足需求。这条规则的明显例外是Cobra CLI框架,你将在第7章使用它,这是一个流行的框架,许多开发人员和公司用它来扩展Go管理命令行应用程序的能力。
每一章都会开发一个功能齐全的命令行工具。你将从基本功能开始,编写一些测试,然后添加更多功能。每一章末尾有额外的练习,可以巩固和提高学到的知识。我们鼓励你自己添加更多功能。
本书花费了大量时间测试代码。在某些情况下,你会发现测试示例比代码示例更复杂。这样做有两个重要原因:命令行工具对基础架构变得越来越重要,必须确保它们正常工作;Go提供开箱即用的功能来测试和基准测试代码。你将从创建基本测试函数开始。然后,运用更高级的特性,例如表驱动测试和依赖项注入,最后通过模拟命令和模块来进行测试。
最后,你可以按任何顺序阅读这本书。如果你有特别的兴趣,或者其中某个示例看起来更有吸引力,可以随意跳读。请注意,有些章节是建立在前几章的内容之上的。交叉引用通常指向书中首次讨论该概念的位置,以便你能更详细地了解该主题。

编辑推荐

美国亚马逊五星图书。谷歌首席技术专家作序推荐。第一本用Go语言开发命令行程序的图书。

内容简介

无论是系统管理员、网络工程师、DevOps专家,还是普通程序员,工作中都需要借助命令行程序完成各种自动化任务,提高工作效率。
Go语言兼具静态语言的稳定性和动态语言的灵活性,加上开发效率高、类型安全、交叉编译、跨平台、易于测试等特性,尤其适合用来开发命令行程序。
本书带领读者利用Go语言丰富的标准库、原生的并发特性、以及灵活的语法开发10款命令行程序,包括执行自动化任务、分析数据、解析日志、处理网络服务等。借助Go语言内置的测试功能自动化地开展测试,确保程序的稳定性与可靠性。利用外部库(如Cobra)开发更强大的工具,与数据库、API、网络服务进行交互。本书内容由浅入深,书中所有示例都附有代码,只需掌握基本的Go语法和概念即可开始学习,尤其适合程序员、DevOps专家、系统管理员、网络工程师阅读学习。

作者简介

里卡多·杰拉尔迪(Ricardo Gerardi)有二十多年的软件开发经验,擅长解决IT自动化问题,他目前在企业开源解决方案供应商Red Hat加拿大分公司担任高级自动化顾问。他最近的研究兴趣是用Go语言解决各种项目问题。Ricardo Gerardi is an IT professional with over 20 years experience in large and small companies. He's currently working as Automation Consultant at Red Hat. Ricardo has been developing command line tools for a long time, for different purposes including automation, monitoring, and data analysis tools, and he has now adopted Go for all his projects.

目录

第 1 章 第一个Go语言命令行程序 ..... 1
1.1 构建简单的单词计数器 ..... 2
1.2 测试简单单词计数器 .... 4
1.3 添加命令行标志 ..... 6
1.4 编译成跨平台工具 .... 9
1.5 练习 ....... 10
1.6 小结 ....... 10

第 2 章 与用户交互 ....... 11
2.1 组织代码 ...... 12
2.2 定义待办事项API ...... 12
2.3 创建初始的待办事项命令行工具 ..... 21
2.4 测试这个初始的命令行实现 ... 24
2.5 处理多个命令行选项 ...... 28
2.6 显示命令行工具用法 ...... 34
2.7 改进列表输出格式 ...... 35
2.8 通过环境变量提高灵活性 .... 38
2.9 从STDIN捕获输入 .... 40
2.10 练习 ...... 45
2.11 小结 ...... 46

第 3 章 在Go中处理文件 ..... 47
3.1 创建基本Markdown预览工具 .... 48
3.2 为Markdown预览工具编写测试 ... 53
3.3 为Markdown预览工具添加临时文件 ... 58
3.4 使用接口实现自动化测试 .... 60
3.5 添加自动预览功能 ...... 64
3.6 清理临时文件 ...... 67
3.7 用模板改进Markdown预览工具 ... 71
3.8 练习 ....... 79
3.9 小结 ....... 80

第 4 章 浏览文件系统 ....... 81
4.1 开发一个文件系统遍历器 .... 82
4.2 使用表驱动测试进行测试 .... 87
4.3 删除匹配的文件 ..... 92
4.4 在测试助手的帮助下进行测试 .... 94
4.5 记录删除的文件 ..... 99
4.6 归档文件 ...... 106
4.7 练习 ..... 116
4.8 小结 ..... 116

第 5 章 提高CLI工具的性能 ...... 117
5.1 开发colStats的初始版本 .... 118
5.2 为colStats编写测试 .... 126
5.3 对工具进行基准测试 ..... 135
5.4 对工具进行性能分析 ..... 139
5.5 减少内存分配 ...... 144
5.6 对工具进行追踪 ..... 148
5.7 改进colStats工具以并发处理文件 ... 150
5.8 减少调度争用 ...... 158
5.9 练习 ..... 164
5.10 小结 ..... 164

第 6 章 控制进程 ....... 165
6.1 执行外部程序 ...... 166
6.2 错误处理 ...... 169
6.3 为Goci编写测试 ..... 171
6.4 定义管道 ...... 175
6.5 将另一个步骤添加到管道 .... 179
6.6 处理来自外部程序的输出 .... 181
6.7 使用上下文运行命令 .... 186
6.8 使用本地Git服务器进行集成测试 .... 192
6.9 使用模拟资源测试命令 ..... 197
6.10 处理信号 ....... 205
6.11 练习 ...... 212
6.12 小结 ...... 212

第 7 章 使用Cobra CLI框架 ...... 213
7.1 初始化Cobra应用程序 .... 214
7.2 浏览新的Cobra应用程序 ... 217
7.3 向应用程序添加第一个子命令 .... 220
7.4 从Scan包开始 .... 223
7.5 创建管理主机的子命令 ..... 231
7.6 测试管理主机的子命令 ..... 239
7.7 添加端口扫描功能 .... 247
7.8 使用Viper进行配置管理 .... 263
7.9 生成命令补全和文档 .... 267
7.10 练习 ...... 272
7.11 小结 ...... 272

第 8 章 使用REST API ....... 273
8.1 开发REST API服务器 ..... 274
8.2 测试REST API 服务器 ..... 280
8.3 完善REST API服务 ...... 284
8.4 为REST API开发简易客户端 ... 301
8.5 在不连接API的情况下测试客户端 .... 310
8.6 查看单个项目 ...... 316
8.7 添加一个项目 ...... 322
8.8 在本地测试HTTP请求 ..... 328
8.9 完成和删除项目 ..... 332
8.10 执行集成测试 ..... 339
8.11 练习 ...... 348
8.12 小结 ...... 348

第 9 章 开发交互式终端工具 ...... 349
9.1 初始化番茄钟应用程序 .... 350
9.2 用存储库模式存储数据 .... 359
9.3 测试番茄钟功能 ..... 363
9.4 构建界面小部件 ..... 373
9.5 组织界面的布局 ..... 386
9.6 构建交互式界面 ..... 389
9.7 用Cobra初始化CLI .... 394
9.8 练习 ..... 399
9.9 小结 ..... 400

第 10 章 将数据持久化到SQL数据库 .... 401
10.1 SQLite入门 ...... 403
10.2 Go、SQL和SQLite ..... 405
10.3 将数据持久化到数据库中 .... 406
10.4 使用SQLite测试存储库 ..... 418
10.5 在应用程序中使用SQLite存储库 .... 420
10.6 向用户显示摘要 ...... 423
10.7 练习 ...... 437
10.8 小结 ..... 438

第 11 章 分发工具 ...... 439
11.1 开发通知包 ..... 440
11.2 加入操作系统相关的数据 .... 442
11.3 在构建中加入操作系统相关的文件 ... 444
11.4 测试通知包 ..... 448
11.5 根据条件构建应用 ..... 454
11.6 交叉编译应用 ...... 460
11.7 编译适配容器的Go应用 .... 464
11.8 将应用以源代码形式发布 .... 470
11.9 练习 ...... 471
11.10 小结 ...... 472

精彩书摘

无论你是系统管理员、网络工程师、DevOps专家,还是任何其他现代IT专业人士,你都会使用命令行应用程序来实现自动化并提高生产效率。这些工具在基础架构中扮演着越来越重要的角色。在本书中,你将使用Go编程语言开发可维护、跨平台、快速且可靠的命令行应用程序。
Go是一种现代编程语言,它结合了编译过程提供的可靠性和动态类型的灵活性。Go的易用性和对新想法进行原型设计的灵活性使其成为编写命令行工具的最佳选择。同时,Go通过提供类型安全、交叉编译、测试和基准测试等功能和特性,允许实现更复杂的场景。
许多流行的命令行工具都是用Go开发的,包括Docker、Podman、Kubectl、Openshift CLI、Hugo和Terraform。如果你曾想过如何制作这类工具,这本书将帮助你。
你将运用Go的基本语法知识,并使用更高级的概念来开发命令行应用程序。你可以使用这些应用程序自动执行任务、分析数据、解析日志、与网络服务对话或满足其他系统要求。你还将使用不同的测试和基准测试技术来确保你的程序快速可靠。

前言/序言

第1章,开发一个单词计数器,快速了解用Go开发命令行应用程序的过程。你将从基本实现开始,增加一些功能,并尝试写测试。你还将添加命令行标志,为不同的平台构建应用程序。
第2章,设计并编写一个命令行工具,通过应用不同的技术,根据常见的标准输入/输出来管理待办事项列表。从标准输入(STDIN)流获取输入,解析命令行参数,并使用flags包为你的工具定义标志选项。使用环境变量来增加工具的灵活性。通过标准输出(STDOUT)流向用户显示信息和结果,并使用标准错误(STDERR)流显示错误以进行正确的错误处理。最后,将通过运用io.Reader接口来深入了解Go接口。
第3章,开发一个工具来使用Web浏览器预览Markdown文件。你将创建并打开用于读取和写入的文件。运用一些技术在不同操作系统之间一致地处理路径。使用临时文件并应用defer关键字来清理它们。还可以通过使用文件模板使你的工具更加灵活。最后,使用Go接口使你的代码更加灵活,同时编写和执行测试以确保代码符合要求。
第4章,浏览文件系统并处理目录和文件属性。开发一个CLI应用程序,根据不同的标准查找、删除和备份文件。执行常见的文件系统操作,如复制、压缩和删除文件。然后把信息输出到屏幕上或日志文件中。最后,应用表驱动测试和测试助手的概念,为应用程序编写灵活而有意义的测试案例。
第5章,开发一个命令行工具来处理来自CSV文件的数据。使用Go的基准测试、分析和跟踪工具来分析其性能、发现瓶颈并重新设计CLI以提高其性能。编写和执行测试以确保应用程序在整个重构过程中可靠地工作。还将应用Go的并发原语,例如goroutine和channel,以确保应用程序以安全的方式并发运行任务。
第6章,实现通过执行外部工具来扩展命令行应用程序的功能。你将执行、控制和捕获它们的输出,为你的Go程序开发一个持续集成工具。你将探索不同的方式来执行外部程序,有各种选项,如超时,确保程序不会永远运行。还将正确处理操作系统的信号,使工具能够优雅地关闭。
第7章,开发一个网络工具,通过应用Cobra CLI框架在远程计算机上执行TCP端口扫描。Cobra是一个流行的框架,允许你创建灵活的命令行工具,使用与POSIX 标准兼容的子命令。你将使用Cobra为你的应用程序生成模板代码,让你专注于其业务逻辑。
第8章,使用REST API改进待办事项程序。开发一个命令行客户端,该客户端使用多种HTTP方法与此API进行交互。解析JSON数据并微调特定的请求参数,例如Header和超时。你还将应用适当的测试技术,确保你的应用程序可靠地工作,而使Web服务器免于过载。
第9章,构建一个交互式命令行应用程序,该应用程序使用终端小部件与用户进行交互。你将使用外部包来设计和开发这个界面。还将应用不同的Go并发技术来开发这个异步应用程序。
第10章,在SQL数据库中保存数据,将通过允许用户将其数据保存到SQL数据库中来扩展交互式应用程序。使用Go的标准库和外部包连接到标准数据库。查询、插入和删除数据库中的数据,并使用本地SQLite3数据库持久化数据。你将使用应用程序界面汇总数据内容,从而使用户可以使用该数据。
第11章,探索几种构建工具的技术,包括不同的构建和交叉编译选项,从而使工具能够在多个操作系统中运行。通过构建标签,根据外部条件来改变构建的行为。你将快速了解如何使用CGO将C代码嵌入你的Go应用程序中。然后,你将应用技术将应用程序打包并以Linux容器或供go get使用的源代码形式发布。
本书并不涉及Go编程语言的基本语法。你应该熟悉变量的声明、类型、自定义类型、流程控制以及Go程序的一般结构。如果你刚开始学习Go,可以看看以下书籍和文章,它们很好地解释了该语言的语法:《Go语言学习指南:惯例模式与编程实践》《Go语言实战》《A Tour of Go》 《Effective Go》 。
本书尽可能使用Go标准库。Go有丰富的标准库,其中的包可以满足创建命令行工具的大部分需求。标准库兼容不同的版本,从而使更多的读者可以使用这些代码。在某些情况下,当没有可用的等效功能时,我们将使用外部包,但我通常更喜欢标准库,即使外部包可以更轻松地满足需求。这条规则的明显例外是Cobra CLI框架,你将在第7章使用它,这是一个流行的框架,许多开发人员和公司用它来扩展Go管理命令行应用程序的能力。
每一章都会开发一个功能齐全的命令行工具。你将从基本功能开始,编写一些测试,然后添加更多功能。每一章末尾有额外的练习,可以巩固和提高学到的知识。我们鼓励你自己添加更多功能。
本书花费了大量时间测试代码。在某些情况下,你会发现测试示例比代码示例更复杂。这样做有两个重要原因:命令行工具对基础架构变得越来越重要,必须确保它们正常工作;Go提供开箱即用的功能来测试和基准测试代码。你将从创建基本测试函数开始。然后,运用更高级的特性,例如表驱动测试和依赖项注入,最后通过模拟命令和模块来进行测试。
最后,你可以按任何顺序阅读这本书。如果你有特别的兴趣,或者其中某个示例看起来更有吸引力,可以随意跳读。请注意,有些章节是建立在前几章的内容之上的。交叉引用通常指向书中首次讨论该概念的位置,以便你能更详细地了解该主题。