Go语言学习指南:惯例模式与编程实践

Go语言学习指南:惯例模式与编程实践

O'Reilly动物系列(中译本)

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
7.434 评价豆瓣读书
¥71.40¥42.84
电子书6折特价截止至:2024-06-20 00:00:00了解详情

作品简介

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

乔恩·博德纳(Jon Bodner),拥有20多年的软件工程师、首席开发者和架构师工作经验。他从事过多个领域的软件开发工作,包括教育、金融、商业、医疗保健、法律、政府和互联网基础设施。

美国Capital One公司的杰出工程师,他为公司的开发和测试工作流做出了巨大贡献,开发了Web支付页面的检测与输入的专利技术,并合作开发了用于发现和管理软件开发问题的工具。

作品目录

  1. 关于作者
  2. 关于封面
  3. O'Reilly Media, Inc介绍
  4. 本书赞誉
  5. 推荐序
  6. 译者序
  7. 前言
  8. 第1章 设置Go语言的开发环境
  9. 1.1 安装Go工具
  10. 1.2 Go的工作空间
  11. 1.3 Go命令集
  12. 1.4 分析与审查
  13. 1.5 选择开发工具
  14. 1.6 Makefile
  15. 1.7 保持更新
  16. 1.8 总结
  17. 第2章 基础类型和变量声明
  18. 2.1 内置类型
  19. 2.2 var与:=
  20. 2.3 const关键字
  21. 2.4 有类型的常量与无类型的常量
  22. 2.5 未使用的变量
  23. 2.6 常量与变量的命名
  24. 2.7 总结
  25. 第3章 复合类型
  26. 3.1 数组
  27. 3.2 切片
  28. 3.3 字符串、字符和字节
  29. 3.4 映射
  30. 3.5 结构体
  31. 3.6 总结
  32. 第4章 代码块、影子变量和流程控制
  33. 4.1 代码块
  34. 4.2 if语句
  35. 4.3 for语句
  36. 4.4 switch语句
  37. 4.5 默认的switch语句
  38. 4.6 if和switch之间的选择
  39. 4.7 goto语句
  40. 4.8 总结
  41. 第5章 函数
  42. 5.1 函数的声明和调用
  43. 5.2 函数即值
  44. 5.3 闭包
  45. 5.4 defer
  46. 5.5 函数的值调用
  47. 5.6 总结
  48. 第6章 指针
  49. 6.1 指针快速入门
  50. 6.2 不畏惧指针
  51. 6.3 指针即可变的参数
  52. 6.4 指针作为第二选择
  53. 6.5 指针传递可提高性能
  54. 6.6 零值与无值
  55. 6.7 映射与切片的区别
  56. 6.8 切片用作缓冲区
  57. 6.9 优化垃圾回收
  58. 6.10 总结
  59. 第7章 类型、方法与接口
  60. 7.1 Go语言的类型
  61. 7.2 方法
  62. 7.3 使用内嵌进行组合
  63. 7.4 内嵌不是继承
  64. 7.5 接口概览
  65. 7.6 接口是类型安全的鸭子类型
  66. 7.7 内嵌与接口
  67. 7.8 接收接口,返回结构体
  68. 7.9 接口与nil
  69. 7.10 空接口
  70. 7.11 类型断言与type-switch
  71. 7.12 谨慎使用类型断言与type-switch
  72. 7.13 函数类型实现接口
  73. 7.14 隐式接口实现依赖注入
  74. 7.15 Wire
  75. 7.16 Go并非传统意义上的面向对象语言
  76. 7.17 总结
  77. 第8章 错误
  78. 8.1 如何处理错误
  79. 8.2 使用字符串创建简单错误
  80. 8.3 哨兵错误
  81. 8.4 错误是值
  82. 8.5 包装错误
  83. 8.6 Is和As
  84. 8.7 使用defer包装错误
  85. 8.8 panic和recover
  86. 8.9 从错误中获取堆栈跟踪信息
  87. 8.10 总结
  88. 第9章 模块、包和导入
  89. 9.1 仓库、模块和包
  90. 9.2 go.mod
  91. 9.3 创建包
  92. 9.4 模块
  93. 9.5 模块的发布
  94. 9.6 模块的版本控制
  95. 9.7 模块代理服务器
  96. 9.8 总结
  97. 第10章 Go的并发编程
  98. 10.1 何时使用并发编程
  99. 10.2 goroutine
  100. 10.3 通道
  101. 10.4 select语句
  102. 10.5 并发实践与模式
  103. 10.6 何时使用互斥锁
  104. 10.7 atomic
  105. 10.8 额外资源
  106. 10.9 总结
  107. 第11章 Go语言标准库
  108. 11.1 标准io库
  109. 11.2 time
  110. 11.3 encoding/json
  111. 11.4 net/http
  112. 11.5 总结
  113. 第12章 上下文
  114. 12.1 什么是上下文
  115. 12.2 取消
  116. 12.3 计时器
  117. 12.4 在上下文中处理取消请求
  118. 12.5 传递值
  119. 12.6 总结
  120. 第13章 测试
  121. 13.1 测试的基本知识
  122. 13.2 表格驱动测试
  123. 13.3 检查代码覆盖率
  124. 13.4 基准测试
  125. 13.5 Go中的测试桩
  126. 13.6 httptest
  127. 13.7 集成测试和编译标签
  128. 13.8 使用竞争检测器检查并发问题
  129. 13.9 总结
  130. 第14章 恶龙禁区:反射、unsafe和cgo
  131. 14.1 在运行时使用反射处理类型
  132. 14.2 unsafe意味着不安全
  133. 14.3 cgo用于集成,而不是为了性能
  134. 14.4 总结
  135. 第15章 展望未来:Go中的泛型
  136. 15.1 泛型减少冗余代码,提高类型安全性
  137. 15.2 Go中的泛型
  138. 15.3 类型列表可指定操作符
  139. 15.4 泛型函数抽象算法
  140. 15.5 类型列表限制常量和实现
  141. 15.6 暂不考虑的问题
  142. 15.7 惯例模式与泛型
  143. 15.8 未来更多可能
  144. 15.9 总结
载入中