思考一个问题:***是什么,为什么会有它,什么历史场景,它是怎么设计的,为什么这么决策
选读这本书的理由
- 我非常喜欢作者通过历史的演进和社区讨论理解设计背后的决策和原因
- 从编译层次理解Go语言设计
内容
- 理解编译器的 词法与语法解析、类型检查、中间代码生成以及机器码生成过程;
- 理解 数组、切片、哈希表和字符串等数据结构的内部表示以及常见操作的原理;
- 理解 Go 语言中的函数、方法以及反射等语言特性;
- 理解常见 并发原语 Mutex、WaitGroup 以及扩展原语的使用和原理;
- 理解 make、new、defer、select、for 和 range 等关键字的实现;
- 理解运行时中的调度器、网络轮询器、内存分配器、垃圾收集器的实现原理;
- 理解 HTTP、RPC、JSON 等标准库的设计与原理;
编译原理
- 源码 —> 词法与语法分析抽象 —> 类型检查和 AST 转换 —> 用 SSA 生成 —> 机器代码生成
- 词法分析 将字符串序列转换成 Token 序列
- 语法的解析 将 Token 转换成上述语法树
- SSA 的主要作用是对代码进行优化