登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入   新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2024年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書

『簡體書』Go语言学习指南:惯例模式与编程实践(原书第2版)

書城自編碼: 4166507
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: [美]乔恩·博德纳
國際書號(ISBN): 9787111791454
出版社: 机械工业出版社
出版日期: 2025-10-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 163.9

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
思想帝国:公共外交的起源与美国对外政策的转变(公共外交译丛)
《 思想帝国:公共外交的起源与美国对外政策的转变(公共外交译丛) 》

售價:HK$ 88.0
公私同圣的秩序建构:王权视角下皇帝祭祀与祠神敕封的隔绝和整合 尔文智识生活系列
《 公私同圣的秩序建构:王权视角下皇帝祭祀与祠神敕封的隔绝和整合 尔文智识生活系列 》

售價:HK$ 94.6
共生共创:建设师生共同课堂丛书——“三师课堂”案例集萃(第一辑)
《 共生共创:建设师生共同课堂丛书——“三师课堂”案例集萃(第一辑) 》

售價:HK$ 74.8
大秦丞相李斯:谋国又谋身的大秦帝国“操盘手”
《 大秦丞相李斯:谋国又谋身的大秦帝国“操盘手” 》

售價:HK$ 64.9
民鸣社与清末民初上海演剧研究
《 民鸣社与清末民初上海演剧研究 》

售價:HK$ 52.8
高中历史文献研读教学研究
《 高中历史文献研读教学研究 》

售價:HK$ 63.8
靠谱:极少数人的成功法则
《 靠谱:极少数人的成功法则 》

售價:HK$ 74.8
刹海
《 刹海 》

售價:HK$ 74.8

編輯推薦:
本书由Datadog公司高级工程师Jon Bodner撰写,他不仅介绍了资深Go开发者所采用的设计模式,还深入探讨了使用这些模式的根本原因。书中通过大量示例,帮助开发者编写清晰、地道的Go语言代码,并设计Go语言项目。相较上一版,本书新增了Go语言泛型和工具集的独立章节,涵盖go vet、go fmt等核心工具,并通过实际示例详解每个工具的使用方法和应用场景。每章末尾新增练习题,帮助读者巩固所学知识。无论你是Go语言初学者,还是经验丰富的开发者,本书都能让你获益良多。
內容簡介:
本书是一本系统讲解Go语言开发的实用教程,从环境搭建到高级特性,循序渐进地引导读者掌握Go编程。首先介绍Go的基础类型、复合类型及流程控制结构,帮助读者建立语言基础;接着深入函数、指针、接口等核心概念,结合实例解析泛型、错误处理等进阶内容;还详细阐述模块与包的管理,以及Go工具集的使用,涵盖开发全流程。书中示例丰富,注重实践,通过具体代码演示语法要点与编程范式,同时强调Go的设计哲学与最佳实践,如接口隐式实现、错误显式处理等。本书适合希望系统学习Go语言的开发者阅读,尤其是有其他编程语言基础、想掌握Go高效开发的人员,能帮助读者从入门到精通,构建健壮的Go应用。
關於作者:
Jon Bodner是Datadog公司的高级工程师,负责牵头推进公司应用性能监控(APM)产品的入门流程简化工作。他同时也是Proteus数据访问库的创建者。在过去25年间,他先后担任过软件工程师、开发负责人及架构师等职务。
目錄
目录
前言1
第1章 设置你的Go环境7
1.1 安装Go工具7
1.2 你的第一个Go程序9
1.3 选择你的工具13
1.4 Makefile文件17
1.5 Go兼容性承诺18
1.6 保持更新18
1.7 练习19
1.8 总结19
第2章 基础类型和变量声明20
2.1 基础类型20
2.2 var与:=的区别30
2.3 使用const32
2.4 有类型常量和无类型常量33
2.5 未使用的变量34
2.6 命名变量和常量35
2.7 练习36
2.8 总结37
第3章 复合类型38
3.1 数组类型—因不灵活而较少被使用38
3.2 切片类型40
3.3 字符串、字符和字节52
3.4 映射类型55
3.5 结构体类型60
3.6 练习64
3.7 总结65
第4章 代码块、影子变量和控制结构66
4.1 代码块66
4.2 影子变量67
4.3 if语句69
4.4 for语句70
4.5 switch语句81
4.6 goto语句86
4.7 练习88
4.8 总结89
第5章 函数90
5.1 声明和调用函数90
5.2 函数也是值97
5.3 闭包101
5.4 defer105
5.5 Go语言的值传递109
5.6 练习111
5.7 总结112
第6章 指针113
6.1 快速指针入门113
6.2 不畏惧指针116
6.3 指针表示可变参数118
6.4 指针是最后的手段121
6.5 指针传递的性能122
6.6 零值与无值的区别123
6.7 映射与切片的区别123
6.8 切片作为缓冲区126
6.9 减少垃圾回收的负担127
6.10 垃圾回收器调优130
6.11 练习131
6.12 总结132
第7章 类型、方法和接口133
7.1 语言中的类型133
7.2 方法134
7.3 iota有时用于枚举141
7.4 使用内嵌进行组合143
7.5 内嵌不是继承144
7.6 接口概览145
7.7 接口是类型安全的鸭子类型146
7.8 内嵌与接口150
7.9 接收接口,返回结构体150
7.10 接口和nil151
7.11 接口是可比较的152
7.12 空接口154
7.13 类型断言和type-switch155
7.14 谨慎使用类型断言和type-switch157
7.15 函数类型实现接口160
7.16 隐式接口实现依赖注入160
7.17 Wire164
7.18 Go并非传统意义上的面向对象语言164
7.19 练习165
7.20 总结165
第8章 泛型166
8.1 泛型减少重复代码并增强类型安全性166
8.2 在Go中引入泛型169
8.3 泛型函数抽象算法171
8.4 泛型和接口172
8.5 使用类型术语指定运算符174
8.6 类型推断与泛型177
8.7 类型元素限制常量177
8.8 结合泛型函数与泛型数据结构178
8.9 关于可比性的更多信息180
8.10 被省略的事物181
8.11 习惯性的Go语言和泛型使用183
8.12 向标准库添加泛型184
8.13 解锁未来特性184
8.14 练习185
8.15 总结185
第9章 错误处理186
9.1 如何处理错误:基础知识186
9.2 使用字符串创建简单错误188
9.3 哨兵错误188
9.4 错误也是值190
9.5 包装错误193
9.6 包装多个错误195
9.7 Is和As196
9.8 使用defer包装错误199
9.9 panic与recover200
9.10 从错误中获取栈跟踪202
9.11 练习203
9.12 总结203
第10章 模块、包和导入204
10.1 仓库、模块和包204
10.2 使用go.mod205
10.3 创建包207
10.4 使用模块219
10.5 发布模块229
10.6 对模块进行版本控制229
10.7 模块代理服务器235
10.8 附加细节236
10.9 练习236
10.10 总结237
第11章 Go工具集238
11.1 使用go run构建并执行238
11.2 使用go install添加第三方工具239
11.3 使用goimports改进导入格式241
11.4 使用代码质量静态分析工具241
11.5 使用govulncheck扫描存在漏洞的依赖项246
11.6 嵌入内容到程序中248
11.7 嵌入隐藏文件251
11.8 使用go generate252
11.9 使用go generate和Makefile254
11.10 在Go二进制文件内读取构建信息255
11.11 为其他平台构建Go二进制文件256
11.12 使用构建标签257
11.13 测试Go的版本258
11.14 使用go help了解有关Go工具的更多信息259
11.15 练习259
11.16 总结259
第12章 Go中的并发性260
12.1 何时使用并发260
12.2 协程261
12.3 通道263
12.4 select266
12.5 并发实践和模式269
12.6 何时使用互斥锁而不是通道283
12.7 原子操作—你可能不需要这些287
12.8 关于并发的更多学习资源287
12.9 练习287
12.10 总结287
第13章 标准库288
13.1 io家族288
13.2 时间293
13.3 encoding/json295
13.4 net/http303
13.5 结构化日志311
13.6 练习313
13.7 总结314
第14章 context315
14.1 什么是context315
14.2 值318
14.3 取消323
14.4 带有截止时间的context328
14.5 在代码中取消context331
14.6 练习332
14.7 总结333
第15章 编写测试334
15.1 测试的基本知识334
15.2 表格驱动测试342
15.3 并发运行测试344
15.4 检查代码覆盖率346
15.5 模糊测试348
15.6 使用基准测试355
15.7 Go中的测试桩358
15.8 httptest363
15.9 集成测试和构建标签365
15.10 使用数据竞争检测器检查并发问题366
15.11 练习368
15.12 总结368
第16章 恶龙禁区:反射、unsafe和cgo369
16.1 反射:运行时类型处理369
16.2 unsafe意味着不安全384
16.3 cgo用于集成而非性能优化391
16.4 练习395
16.5 总结395
內容試閱
前言
在第1版的前言中,我写道:
最初我想给本书取名为Boring Go,因为用Go语言编写程序确实很无趣……
不过,无趣并不意味着平庸。要想正确使用Go,就需要了解它的功能是如何整合在一起的。即使你能够写出看起来像Java或Python的Go代码,也并不会满足于得到的结果,并且想弄清楚所有这些特性背后的底层机制是怎么回事。这正是本书的意义所在。本书清楚地介绍了Go的特性,解释了如何才能最大限度地使用它们来编写可长期维护且符合Go语言惯例的代码。
Go仍然是一门具有少量特性的小语种。它仍然缺乏继承、面向切面编程、函数重载、操作符重载、模式匹配、命名参数、异常以及其他许多使语言复杂化的特性。那么,为什么一本关于无趣的语言的书需要更新呢?
写这个版本有几个原因。首先,就像无趣并不意味着平庸,它也并不意味着不变。在过去的3年里,出现了新的特性、工具和库,如结构化日志记录、模糊测试、工作空间和漏洞检查等改进,可帮助Go开发者创建可靠的、持久的、可维护的代码。现在,Go开发者已经对泛型有了几年的经验,标准库开始包含类型约束和泛型函数以减少重复的代码。甚至unsafe包也已经更新,使其更安全一些。Go开发者需要一些指引来理解如何最好地使用这些新特性。
其次,Go的一些方面在第1版中没有得到很好的展示。介绍章节不如我希望的那样流畅。丰富的Go工具生态系统没有被探索。第1版的读者要求有练习和额外的示例代码。本书试图解决这些问题。
最后,Go团队引入了一些令人兴奋的新东西。现在有一个策略,它允许Go保持长期软件工程项目所需的向后兼容性,同时对长期存在的设计缺陷进行破坏性改变。Go 1.22中引入的新的for循环变量范围规则是首个利用这种方法的特性。
Go仍然是无趣的,也仍然是干货满满的,并且比以往任何时候都更好。我希望你们能喜欢这第2版。
谁应该阅读这本书
本书面向那些希望学习第2种(或第5种)编程语言的开发者。重点关注的是对Go语言不熟悉的人群,从根本不知道Go语言到通过Go语言教程写过一些Go代码的人。学习Go的重点不仅仅是如何用Go语言编写程序,而是如何地道地使用Go。更有经验的Go开发者可以找到如何最好地利用该语言较新特性的建议。最重要的是,读者要学习如何编写看起来符合Go风格的代码。
我们假设读者具有使用开发者工具的经验,例如版本控制(最好是Git)和集成开发环境(IDE)。读者应该熟悉基本的计算机科学概念,如并发和抽象,因为本书会解释它们在Go中是如何工作的。一些代码示例可以从GitHub下载,更多的示例可以在The Go Playground在线尝试。尽管互联网不是必需的,但在回顾可执行示例时会有所帮助。由于Go通常用于构建和调用HTTP服务器,因此一些示例假设你熟悉基本的HTTP概念。
尽管Go的大多数特性在其他语言中也可以找到,但Go做出了不同的权衡,因此用它编写的程序可以具有不同的结构。本书从如何搭建Go开发环境开始,继而介绍变量、类型、控制结构和函数。如果你想跳过这些内容,请控制住这种冲动,花时间去看一看。通常是那些细节使你的代码更符合Go的习惯用法。一些乍一看似乎显而易见的东西,当你深入思考时会微妙地令人惊讶。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。
等宽斜体(Constant width italic)
表示应由用户提供的值或由上下文确定的值替换的文本。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
示例代码
可以从 />这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O’Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O’Reilly的示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书名、作者、出版社和ISBN,例如:
Learning Go,Second Edition,作者Jon Bodner,由O’Reilly出版,书号978-1-098-13929-2。
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过permissions@oreilly.com联系我们。
O’Reilly在线学习平台(O’Reilly Online Learning)
40多年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问 />如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn。
本书配套网站 />关于书籍、课程、会议和新闻的更多信息,请访问我们的网站 />我们在LinkedIn上的地址: />我们在Twitter上的地址: />我们在YouTube上的地址: />第2版致谢
对于本书第1版的反响,我感到受宠若惊。该书于2019年末开始创作,2020年末完成,2021年初出版。
完成后,人们问我下一本书是什么。我告诉他们,我打算好好休息一下,然后开始撰写一部言情小说。但是,在我开始书写关于海盗和公主的故事之前,惊人的事情发生了:本书获得了巨大成功。它在O’Reilly Learning上成为最热门的5本书之一,几乎持续了一年的时间。随着销量的持续增长,我发现第1版中有一些需要修正的地方,读者们也通过信件向我指出了错误和遗漏。有些问题在后续印刷中作为勘误得到修正,当我联系O’Reilly询问他们是否有兴趣推出新版时,他们表示很期待。
写作第2版是一次愉快的经历。Rita Fernando提供了指导、反馈和编辑工作。得益于Jonathan Amsterdam、Leam Hall、Katie Hockman、Thomas Hunter、Max Horstmann和Natalie Pistunovich等人的反馈,本书得到了极大的提升。Chris Hines在勘误和提出更好的例子方面做了极其细致的工作。Abby Deng和Datadog的Go书籍俱乐部成员的评论和反馈,让我能够根据Go语言新手开发者的反馈进行修改。剩下的(希望很少)错误全都是我的。
我的妻子和孩子们非常宽容,不介意我错过家庭电影之夜,而是让我琢磨如何最好地描述Go的新特性。
我还想感谢第1版读者对我表达的善意。感谢大家的支持和鼓励。
第1版致谢
写书似乎应当是一项孤独的任务,但如果没有大家的帮助,本书就不会问世。在2019年的GopherCon大会上,我向Carmen Andoh提出想写一本关于Go语言的书,于是她把我介绍给O’Reilly出版社的Zan McQuade。Zan指导我完成了签约,并在我写作本书的过程中持续向我提供宝贵的建议。责任编辑Michele Cronin审校了全书并给予反馈,在我遇到无法避免的困难时耐心倾听。感谢文案编辑Tonya Trybula和制作编辑Beth Kelly,他们大幅提升了书稿质量使本书得以顺利出版。
在本书的写作过程中,我得到了很多人的反馈和鼓励,其中有Jonathan Altman、Jonathan Amsterdam、Johnny Ray Austin、Chris Fauerbach、Chris Hines、Bill Kennedy、Tony Nelson、Phil Pearl、Liz Rice、Aaron Schlesinger、Chris Stout、Kapil Thangavelu、Claire Trivisonno、Volker Uhrig、Jeff Wendling和Kris Zaragoza。特别感谢Rob Liebowitz的大力帮助,如果没有他的详细批改和迅速反馈,本书远远达不到现在的水平。
感谢我的家人容忍我每个夜晚和周末都在计算机前度过,而不是陪伴他们。特别感谢我的妻子Laura,当我凌晨1点或更晚才上床睡觉时,她总是贴心地假装没有被我吵醒。
最后,我想对40年前引领我走上这条道路的两个人表达感谢。首先是Paul Goldstein,他是我一个儿时朋友的父亲。1982年,Paul向我们展示了一台Commodore PET,他先输入PRINT 2 + 2,然后按下回车键。当屏幕上显示4时,我惊呆了,顿时就被深深地吸引住了。后来他教我如何编程,甚至将这台PET借我用了几个星期。其次是我的母亲,她鼓励我对于编程和计算机的兴趣,尽管当时我根本不知道这些东西有什么用。她给我买了Atari 2600的BASIC编程盒、VIC-20和Commodore 64,以及一些编程书,这些书激发了我有朝一日自己写书的想法。
感谢你们帮助我实现了梦想。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2025 (香港)大書城有限公司  All Rights Reserved.