猜你喜欢
Go语言实战

Go语言实战

书籍作者:马特·布彻 ISBN:9787111617501
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8395
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《Go语言实战》介绍了Go语言的实践应用技术,主要以实际应用为目的,使读者在掌握基本的Go语言知识的基础上进行更多的实践训练。《Go语言实战》涵盖了Go语言基本概念、Go应用程序的管理机制、创建用户界面、云基础设施、微服务器及服务到服务的通信模式等内容,并按照问题、解决方案和讨论的顺序结合具体的程序示例对70种Go语言的技术逐步进行了介绍。《Go语言实战》可以作为程序员解决实际问题的参考。也可以作为Go语言爱好者学习和应用的参考书。还可以作为非专业学生Go语言学习的入门参考书,也可以作为专业学生的实践参考书。

作者简介

马特 布彻是Deis的一名建筑师,在那里,他的日常工作就是做开源项目。他写过几本书和一些文章。布彻拥有哲学博士学位,在美国芝加哥的罗耀拉大学计算机科学系任教。马特热衷于构建强大的团队和开发解决复杂的问题的完美方案。
马特?法里纳是惠普公司的高级技术团队的首席工程师。他是一个作家、演说家,还是开源软件的定期撰稿人,开源软件做
软件开发工作已经超过了1/4世纪。马特?法里纳喜欢通过创建解决方案为普通民众解决问题,他既能够采用*新的技术来创建解决方案,又可以通过容易被忽视的一些普通的方法来完成这些工作。


编辑推荐
适读人群 :程序员 Go语言爱好者 相关院校师生

内含70个技术案例
内容实用,起点较低、上手容易

前言

当第一次使用Go语言时,就发现它是一种有潜力的语言。我们想利用它来构建应用程序。但它毕竟是一种新的语言,许多公司都对引入一种新的编程语言充满着疑虑。
在Go语言对其有可能产生巨大影响的企业中更是如此。一种新的编程语言要面临着能否被信任、被接受、被采用等挑战。在很多企业中,有成千上万的编程语言的研发者。但是往往这些企业的领导人都是被动地去尝试一种新的语言,这就需要语言的研发者们能掌握好的技术来构建应用程序,以期让企业能看到收益。
开源项目、会议、培训和书籍等都是有助于人们更容易掌握编程语言的一些途径。我们想写一本教授Go语言的书,旨在帮助Go社区的人们,帮助那些想学习Go语言或者试图说服他们企业的领导学习Go语言的人们,还可以为我们所工作的公司和我们自己的工作提供帮助。
我们开始写这本书时,最直接的目标本是想利用Go语言进行云开发。所以Go语言起初本是一种为云开发而构建的语言,而且在云计算方面我们也已经花了数年的工作时间。但与曼宁出版社刚开始合作时,我们就看到了一个远超出云计算的扩展研究范围的机会,这是一种更实用、更有帮助的模式。所以这本书的主旨也从最初的聚焦云计算转换成了聚焦模式。不过,本书仍然保留了云计算作为其根源。
我们希望Go语言实践训练这本书能帮助开发人员实现从熟悉Go语言到富有成效地应用Go语言的转变。希望此书能有助于开发者社区的成长,也希望能为社区的组织编写出更好的软件提供帮助。

当听说马特法里纳和马特布彻准备合作出一本关于Go语言的新书时,我真的很激动。他们两人近几年在Go语言生态系统的研究中都有着重大的贡献,而且二人丰富的工作经验和工作背景将为此书增添散文般的韵味。这本书旨在以Go语言的实际应用为目的,使读者在掌握基本的Go语言知识的基础上进行更多的实践训练。
本书分为4个部分,这4部分都比较容易理解,而且每一部分都有各自不同的侧重点。
第1部分是Go语言重要概念的复习。着急学习本书且对自己Go语言技能的掌握还算满意的读者,完全可以跳过本章节的学习,但我不建议这样做。回顾最后的手稿,我有了非常珍贵的发现,我认为每个人都将从这些章节中受益。
第2部分深入阐述了在现实世界中Go应用程序的管理机制。本书中讲述程序错误的章节是我读过的关于如何处理Go程序错误的最好的文章,其关于程序的调试和测试的章节为Go应用程序的开发提供了重要的中间步骤,这就使得Go应用程序实现了从初步的概念证明到可靠的生产系统的转变。
第3部分介绍了如何为应用程序创建用户界面。有关模板的章节对Go语言生态系统中的复杂部分的学习是一个很好的指南。在这一不部分中,读者将会学到重新启用模板的实际可行且能够使Web接口更加简洁的方法。这本书物超所值,因为要找到很容易地映射到实际应用程序的例子模板,是非常困难的。本部分在接下来的部分还将介绍如何创建和使用符合标准的REST API以及掌握如何正确版本化该API。
第4部分深入介绍了交互操作方面的知识,这是当今大部分应用程序都所需要的。本章节将着重介绍云基础设施以及Go语言在云计算模型中的适用位置。最后全面介绍了微服务器和服务到服务的通信模式。
无论是对Go语言的初学者还是对已经在使用Go语言编程的人员来说,这本书都可以为他们提供很重要的知识,帮助他们把应用程序的开发提升到一个新的层次。为将本书中复杂的信息转化为比较容易理解的知识点,作者为此做了大量的工作。这本书能够出版并且将它的价值带到社区,我真的很高兴。我希望您也会像我一样喜欢阅读它。

有的编程语言简洁,比如Java,PHP;有的编程语言优雅,比如Lisp,Python;既简洁又优雅的编程语言,到目前为止恐怕要非Go语言莫属了。而Go的优势远不止于此,它在目标机器上只需一个基础的系统和一些必要的管理、监控工具即可运行,完全不需要关心其它应用程序常常所需要的各种包、库的依赖关系,这大大减轻了维护的负担;Go语言中的Goroutine和channel工具使高并发服务端软件的编写变得相当容易,很多情况下甚至完全不用考虑锁机及由此带来的各种问题;最主要的一点也是作为我们计算机专业教师最看重的一点是:Go语言学习难度低,上手比较快。
鉴于Go语言的以上这些优势,我们对Go产生了浓厚的兴趣。因此当我们看到《Go in Practice》这本书时,我们欣喜若狂。因为无论是对Go语言的初学者还是对已经在使用Go语言编程的人员来说,这本书都可以为他们提供很重要的知识,帮助他们把应用程序的开发提升到一个新的层次。所以我们决定申请翻译这本书。
当我们收到机械工业出版社的丁成编辑寄来的英文原著时,我们几个计算机专业的教师组成了一个翻译小组,利用业余时间翻译。其中刘燕燕、金燕、肖加标完成了大部分工作:
刘燕燕:本次翻译活动的倡议者和联络人,翻译了第6、7、8、9、10、11章以及索引部分。
金燕:翻译了第3、4、5章,还帮助分析、翻译了全书各章中的疑难句子。
肖加标:翻译了前言、序、鸣谢、关于本书、作者简介、关于封面插图和第1、2章。
在本书的翻译过程中,我们不放过任何一处疑点,常常为了把一条命令或一个参数彻底搞清楚而去查阅大量资料。翻译的过程也是一个磨练意志的过程,为此我们放弃了业余陪伴家人的时间,凑在一起琢磨一些疑难句子的翻译。最终,我们用了五个月的时间完成了本书的翻译工作。
感谢我们的父母、爱人和孩子对我们的理解和支持,感谢同事程继洪在翻译过程中给予我们的帮助。谢谢你们!


目录

译者序

鸣谢
前言
关于本书
关于作者
关于封面插图

第1部分1
1 走进GO语言1
1.1 何谓GO语言2
1.2 GO语言的特点4
1.2.1 多个返回值4
1.2.2 现代化的标准库6
1.2.3 goroutine 与通道的并发性(Go语言规程及通道并发性)9
1.2.4 Go工具链—不仅仅是一种语言14
1.3 众多编程语言背景下的GO语言20
1.3.1 C语言与Go语言20
1.3.2 Java 与 Go21
1.3.3 Python、PHP与Go23
1.3.4 JavaScript、Node.js与 Go25
1.4启动、运行GO语言26
1.4.1安装Go语言26
1.4.2Go语言与Git,Mercurial协同运行和版本控制27
1.4.3探索工作区27
1.4.4环境变量的使用28
1.5 GO,你好29
1.6小结31
2坚实的基础32
2.1 GO语言使用CLI应用程序的方法33
2.1.1 命令行标记33
2.1.2 命令行框架结构40
2.2 配置问题处理47
2.3使用实际的WEB服务器54
2.3.1 启动和关闭服务器55
2.3.2 路由web 请求60
2.4小结71
3 GO语言的并发性72
3.1理解GO语言的并发模型72
3.2 使用GOROUNTINE73
3.3 通道的应用88
3.4 小结101
第2部分103
4 ERROR错误与PANIC异常的处理103
4.1 ERROR错误处理104
4.2 PANIC异常系统114
4.2.1 error错误与panic异常的区分114
4.2.2 panic异常处理116
4.2.3 从panic异常中恢复过来118
4.2.4panic异常和goroutine函数125
4.3 小结134
5 调试和测试135
5.1定位BUGS135
5.1.1等等,我的调试器(debugger)在哪里?136
5.2 日志记录136
5.2.1使用Go语言的记录器137
5.2.2使用系统记录器148
5.3访问堆栈跟踪152
5.4 测试155
5.4.1 单元测试155
5.4.2生成测试162
5.5使用性能测试和基准165
5.6小结172
第3部分应用程序的接口174
6 HTML和电子邮件的模板样式174
6.1 HTML模板的使用175
6.1.1标准库HTML包概述175
6.1.2 在模板中添加函数177
6.1.3 模板解析限制180
6.1.4 模板执行中断182
6.1.5 混合模板183
6.2 在EMAIL中使用模板195
6.3 小结197
7 静态资源(ASSET)和表单的获取和接收198
7.1 获取静态内容199
7.2 表单POST的处理213
7.2.1 表单请求简介213
7.2.2 使用文件和分段提交216
7.2.3 使用原始的多个数据223
7.3 小结228
8 使用WEB服务229
8.1 使用RESET API229
8.1.1 使用HTTP客户端230
8.1.2 发生故障时232
8.2 通过HTTP传递和处理错误236
8.2.1 生成自定义错误237
8.2.2 读取和使用自定义错误238
8.3 传递和映射JSON241
8.4版本控制REST API246
8.5小结251
第四部分 将应用程序发布到云252
9 使用云252
9.1什么是云计算?253
9.1.1 云计算的类型253
9.1.2 容器和云本地应用程序255
9.2管理云服务257
9.2.1避免云提供商锁定257
9.2.2处理不一致的错误261
9.3在云服务器上运行263
9.3.1执行运行时检测263
9.3.2构建云266
9.3.3执行运行时监视269
9.4 小结271
10 云服务之间的通信272
10.1微服务和高可用性272
10.2服务之间的通信274
10.2.1 使REST更快274
10.2.2超越REST281
10.3 小结290
11反射和代码生成291
11.1反射的三个特征291
11.2 结构体,标签和注解304
11.2.1 注释结构304
11.2.2 使用标签注解305
11.3使用GO代码生成GO代码312
11.4小结319


产品特色