Go语言学习笔记

Go语言学习笔记

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
8.1155 评价豆瓣读书
免费试读
¥44.50¥35.60
今日特价截止至:2019-06-27 02:00:00了解详情

作品简介

作为时下流行的一种系统编程语言,Go简单易学,性能很好,且支持各类主流平台。已有大量项目采用Go编写,这其中就包括Docker等明星作品,其开发和执行效率早已被证明。本书经四年多逐步完善,内容覆盖了语言、运行时、性能优化、工具链等各层面知识。且内容经大量读者反馈和校对,没有明显的缺陷和错误。上卷细致解析了语言规范相关细节,便于读者深入理解语言相关功能的使用方法和注意事项。下卷则对运行时源码做出深度剖析,引导读者透彻了解语言功能背后的支持环境和运行体系,诸如内存分配、垃圾回收和并发调度等。本书不适合编程初学入门,可供有实际编程经验或正在使用Go工作的人群参考。

雨痕:自1996年从事计算机软件开发工作以来,已20春秋。期间供职于北大方正、西单电子商务、九城数码、知乎等公司。主要从事核心开发、架构设计,以及部分管理工作。

作品目录

  1. 前言
  2. 读者定位
  3. 联系方式
  4. 本书的版本历程
  5. 上卷 语言详解
  6. 第1章 概述
  7. 语法简单
  8. 并发模型
  9. 内存分配
  10. 垃圾回收
  11. 静态链接
  12. 标准库
  13. 工具链
  14. 源文件
  15. 变量
  16. 表达式
  17. 函数
  18. 数据
  19. 方法
  20. 接口
  21. 并发
  22. 第2章 类型
  23. 定义
  24. 简短模式
  25. 多变量赋值
  26. 未使用错误
  27. 命名建议
  28. 空标识符
  29. 枚举
  30. 展开
  31. 别名
  32. 语法歧义
  33. 未命名类型
  34. 第3章 表达式
  35. 优先级
  36. 二元运算符
  37. 位运算符
  38. 自增
  39. 指针
  40. if...else...
  41. switch
  42. for
  43. goto,continue,break
  44. 第4章 函数
  45. 建议命名规则
  46. 变参
  47. 命名返回值
  48. 闭包
  49. 误用
  50. 性能
  51. error
  52. panic,recover
  53. 第5章 数据
  54. 转换
  55. 性能
  56. Unicode
  57. 指针
  58. 复制
  59. reslice
  60. append
  61. copy
  62. 安全
  63. 性能
  64. 空结构
  65. 匿名字段
  66. 字段标签
  67. 内存布局
  68. 第6章 方法
  69. Method Expression
  70. Method Value
  71. 第7章 接口
  72. 第8章 并发
  73. Wait
  74. GOMAXPROCS
  75. Local Storage
  76. Gosched
  77. Goexit
  78. 收发
  79. 单向
  80. 选择
  81. 模式
  82. 性能
  83. 资源泄漏
  84. 第9章 包结构
  85. 环境变量
  86. 相对路径
  87. 自定义路径
  88. 权限
  89. 初始化
  90. 内部包
  91. 第10章 反射
  92. 第11章 测试
  93. testing
  94. table driven
  95. test main
  96. example
  97. timer
  98. memory
  99. 第12章 工具链
  100. go build
  101. go install
  102. go get
  103. go env
  104. go clean
  105. 交叉编译
  106. 条件编译
  107. 预处理
  108. 下卷 源码剖析
  109. 第13章 准备
  110. 第14章 引导
  111. 第15章 初始化
  112. 第16章 内存分配
  113. 内存块
  114. 管理组件
  115. recordspan
  116. 第17章 垃圾回收
  117. 三色标记和写屏障
  118. 控制器
  119. 辅助回收
  120. 扫描
  121. 标记
  122. 并行任务框架
  123. 缓存队列
  124. 内存状态统计
  125. 第18章 并发调度
  126. findrunnable
  127. lockedg
  128. stackcache
  129. morestack
  130. stackfree
  131. 抢占调度
  132. Gosched
  133. gopark
  134. notesleep
  135. Goexit
  136. stopTheWorld
  137. 第19章 通道
  138. 同步
  139. 异步
  140. 关闭
  141. 第20章 延迟
  142. 第21章 析构
  143. 第22章 缓存池
载入中

热门划线

  1. 退化赋值的前提条件是:最少有一个新变量被定义,且必须是同一作用域。8 人
  2. 所谓引用类型(reference type)特指slice、map、channel这三种预定义类型。7 人
  3. 内置函数new按指定类型长度分配零值内存,返回指针,并不关心类型内部构造和初始化方式。而引用类型则必须使用make函数创建,编译器会将make转换为目标类型专用的创建函数(或指令),以确保完成全部内存分配和相关属性初始化。7 人
  4. 在处理函数错误返回值时,退化赋值允许我们重复使用err变量,这是相当有益的。6 人
  5. Go并没有明确意义上的enum定义,不过可借助iota标识符实现一组自增常量值来实现枚举类型。5 人
  6. 不同于变量在运行期分配存储内存(非优化状态),常量通常会被编译器在预处理阶段直接展开,作为指令数据使用。5 人
  7. 数字常量不会分配存储空间,无须像变量那样通过内存寻址来取值,因此无法获取地址。5 人
  8. 对于海量小对象,应直接用字典存储键值数据拷贝,而非指针。这有助于减少需要扫描的对象数量,大幅缩短垃圾回收时间。另外,字典不会收缩内存,所以适当替换成新对象是必要的。5 人
  9. 在常量组中如不指定类型和初始化值,则与上一行非空常量右值(表达式文本)相同。4 人
  10. 除常量、别名类型以及未命名类型外,Go强制要求使用显式类型转换。4 人

喜欢这本书的人也喜欢