当前位置:当前位置:主页 > 计算机电子书 > 程序设计 > Go语言 pdf电子书
Go语言学习指南:惯例模式与编程实践

Go语言学习指南:惯例模式与编程实践 PDF 超清中文版

  • 更新:2022-09-05
  • 大小:89.4 MB
  • 类别:Go语言
  • 作者:乔恩·博德纳(Jon、Bodner)
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

Go语言学习指南:惯例模式与编程实践》是由机械工业出版社出版的一本关于Go语言方面的书籍,作者是乔恩·博德纳(Jon、Bodner),主要介绍了关于Go语言、Go语言学习指南、惯例模式、编程实践方面的知识内容,目前在Go语言类书籍综合评分为:9.7分。

书籍介绍

编辑推荐

Go语言正迅速成为构建Web服务的优选语言。尽管市面上有大量的教程向具有其他编程语言经验的开发者讲授Go语法,但要熟练掌握Go语言,这些教程远远不够,它们并没有介绍Go语言的惯例模式与编程实践。本书将指导读者学习编写清晰且符合Go语言惯例的代码所需的关键知识。

无论你的开发经验和水平如何,都将通过本书学会Go开发者的思考模式。作者Jon Bodner精心介绍了经验丰富的Go开发者所采用的设计模式,并说明了使用这些模式的理由。你还将提前了解Go即将发布的泛型特性,以及它是如何从设计到实现,一步步融入Go语言的。

通过本书,你将:
学习如何在Go语言中编写惯例代码并设计Go项目。
理解Go语言设计中的权衡。
学会为独立开发人员或团队构建Go语言的开发环境。
了解如何以及何时使用反射、unsafe和cgo。
探究如何利用Go语言的特性使代码高效运行。
了解哪些Go语言的特性应该少使用,或避免使用。

内容简介

Go语言正在迅速成为构建Web服务的优选语言。本书很好地阐述了Go语言的特性,同时指出了Go语言的惯例代码、陷阱和设计模式。本书语言生动,表述清晰,将Go语言的基本原理与语言哲学联系在一起,引导读者正确编写Go语言。既介绍基础知识,又涵盖高级主题(如反射和C语言互操作),通过大量例子演示了如何写出符合Go语言惯例的代码,解释了可能影响程序行为的底层概念,比如指针对内存布局和垃圾回收的影响。无论你是Go语言的初学者,还是经验丰富的Go语言从业人员,相信都能从本书中获益良多。

目录

  • 第1章 设置Go语言的开发环境7
  • 1.1 安装Go工具7
  • 1.2 Go的工作空间8
  • 1.3 Go命令集9
  • 1.4 分析与审查13
  • 1.5 选择开发工具15
  • 1.6 Makefile18
  • 1.7 保持更新19
  • 1.8 总结20
  • 第2章 基础类型和变量声明21
  • 2.1 内置类型21
  • 2.2 var与:= 30
  • 2.3 const关键字32
  • 2.4 有类型的常量与无类型的常量33
  • 2.5 未使用的变量34
  • 2.6 常量与变量的命名35
  • 2.7 总结37
  • 第3章 复合类型38
  • 3.1 数组38
  • 3.2 切片40
  • 3.3 字符串、字符和字节49
  • 3.4 映射52
  • 3.5 结构体57
  • 3.6 总结61
  • 第4章 代码块、影子变量和流程控制62
  • 4.1 代码块62
  • 4.2 if语句66
  • 4.3 for语句67
  • 4.4 switch语句78
  • 4.5 默认的switch语句81
  • 4.6 if和switch之间的选择82
  • 4.7 goto语句83
  • 4.8 总结85
  • 第5章 函数86
  • 5.1 函数的声明和调用86
  • 5.2 函数即值92
  • 5.3 闭包95
  • 5.4 defer98
  • 5.5 函数的值调用101
  • 5.6 总结103
  • 第6章 指针104
  • 6.1 指针快速入门104
  • 6.2 不畏惧指针107
  • 6.3 指针即可变的参数109
  • 6.4 指针作为第二选择113
  • 6.5 指针传递可提高性能114
  • 6.6 零值与无值114
  • 6.7 映射与切片的区别115
  • 6.8 切片用作缓冲区118
  • 6.9 优化垃圾回收119
  • 6.10 总结121
  • 第7章 类型、方法与接口122
  • 7.1 Go语言的类型122
  • 7.2 方法123
  • 7.3 使用内嵌进行组合131
  • 7.4 内嵌不是继承132
  • 7.5 接口概览133
  • 7.6 接口是类型安全的鸭子类型134
  • 7.7 内嵌与接口137
  • 7.8 接收接口,返回结构体138
  • 7.9 接口与nil139
  • 7.10 空接口139
  • 7.11 类型断言与type-switch141
  • 7.12 谨慎使用类型断言与type-switch143
  • 7.13 函数类型实现接口145
  • 7.14 隐式接口实现依赖注入146
  • 7.15 Wire150
  • 7.16 Go并非传统意义上的面向对象语言150
  • 7.17 总结150
  • 第8章 错误151
  • 8.1 如何处理错误151
  • 8.2 使用字符串创建简单错误152
  • 8.3 哨兵错误153
  • 8.4 错误是值155
  • 8.5 包装错误157
  • 8.6 Is和As159
  • 8.7 使用defer包装错误162
  • 8.8 panic和recover163
  • 8.9 从错误中获取堆栈跟踪信息165
  • 8.10 总结165
  • 第9章 模块、包和导入166
  • 9.1 仓库、模块和包166
  • 9.2 go.mod166
  • 9.3 创建包167
  • 9.4 模块177
  • 9.5 模块的发布185
  • 9.6模块的版本控制186
  • 9.7 模块代理服务器187
  • 9.8 总结188
  • 第10章 Go的并发编程189
  • 10.1 何时使用并发编程189
  • 10.2 goroutine190
  • 10.3 通道192
  • 10.4 select语句194
  • 10.5 并发实践与模式197
  • 10.6 何时使用互斥锁211
  • 10.7 atomic214
  • 10.8 额外资源214
  • 10.9 总结214
  • 第11章 Go语言标准库215
  • 11.1 标准io库215
  • 11.2 time220
  • 11.3 encoding/json222
  • 11.4 net/http228
  • 11.5 总结234
  • 第12章 上下文235
  • 12.1 什么是上下文235
  • 12.2 取消238
  • 12.3 计时器241
  • 12.4 在上下文中处理取消请求243
  • 12.5 传递值244
  • 12.6 总结249
  • 第13章 测试250
  • 13.1 测试的基本知识250
  • 13.2 表格驱动测试256
  • 13.3 检查代码覆盖率258
  • 13.4 基准测试261
  • 13.5 Go中的测试桩264
  • 13.6 httptest269
  • 13.7 集成测试和编译标签271
  • 13.8 使用竞争检测器检查并发问题272
  • 13.9总结274
  • 第14章 恶龙禁区:反射、unsafe和cgo275
  • 14.1 在运行时使用反射处理类型275
  • 14.2 unsafe意味着不安全289
  • 14.3 cgo用于集成,而不是为了性能294
  • 14.4 总结297
  • 第15章 展望未来:Go中的泛型298
  • 15.1 泛型减少冗余代码,提高类型安全性298
  • 15.2 Go中的泛型300
  • 15.3 类型列表可指定操作符305
  • 15.4 泛型函数抽象算法306
  • 15.5 类型列表限制常量和实现307
  • 15.6 暂不考虑的问题310
  • 15.7 惯例模式与泛型312
  • 15.8 未来更多可能312
  • 15.9 总结313

资源获取

相关资源

网友留言