《Go语言定制指南》是由人民邮电出版社出版的一本关于Go语言方面的书籍,作者是柴树杉、史斌、丁尔男,主要介绍了关于Go语言、Go语言指南方面的知识内容,目前在Go语言类书籍综合评分为:7.1分。
书籍介绍
Go语言程序设计与实现教程,Go语言编程实战自学,剖析Go语言底层运行机制,学习编译器原理,提升编程技艺,提高编写效率,附赠源代码
编辑推荐
1.深入浅出,接触核心
理解Go语言语法树的工作原理,提升编程技艺,学习编译器的原理与实现,编写更效率的代码;通过理解简单的“凹语言”,深刻理解Go语言特性,获得自制一门编程语言的启发。
2.内容针对性与专业性强
本书面向已经熟练掌握Go语言并在进行项目开发的程序员,也适合想深入了解Go语言底层运行机制的程序员阅读,同时可作为对编程语言/编译器有兴趣并想进行实际项目实践的程序员的参考书。
内容简介
Go语言语法树是Go语言源文件的另一种语义等价的表现形式,Go语言自带的gofmt和godoc等命令都是建立在Go语言语法树基础之上的分析工具。本书从Go语言语法树出发,重新审视Go语言源文件,阐述定制Go语言的核心技术。书中通过对go/ast、go/ssa等包的分析,-步步深入Go语言核心,后简要介绍LLVM,读者可以结合IIVM和Go语言语法树按需定制,创造一个语法与Go语言语法头似的简单的编程语言及与其对应的编译器,达到掌握自制编程语言和编译器的目的。本书面向已经熟练掌握Go语言并在进行项目开发的程序员,也适合想深入了解Go语言底层运行机制的程序员阅读,同时可作为对编程语言/编译器有兴趣并想进行实际项目实践的程序员的参考书。
作者简介
柴树杉,Go/C/汇编语言爱好者,《Go语言高级编程》作者之一,关注与汇编语言相关的底层技术。他目前在蚂蚁集团从事领域特定语言(DSL)的设计和开发工作。史斌,有十余年编译器和虚拟机开发经验。Go和LLVM开源项目贡献者,拥有这两个项目官方代码仓库的提交权限,目前两个项目的提交记录都超过100次。他在全球Go贡献者榜上长期排名TOP50,目前致力于国产芯片软件生态系统的构建工作。丁尔男,Go/C/Web前端技术爱好者,长年从事3D开发工作,热衷于性能优化。他目前在武汉航天远景科技股份有限公司分管3D相关产品的开发工作。
目录
- 第1章词法单元1
- 1.1词法单元简介2
- 1.2表示词法单元的数据类型3
- 1.3FileSet和File6
- 1.4解析词法单元7
- 1.5位置信息10
- 1.6小结11
- 第2章基础字面值13
- 2.1基础字面值的定义13
- 2.2基础字面值的语法树结构15
- 2.3构造基础字面值16
- 2.4解析基础字面值17
- 2.5标识符字面值18
- 2.6小结19
- 第3章基础表达式21
- 3.1语法规范21
- 3.2解析表达式22
- 3.3求值表达式25
- 3.4标识符:为表达式引入变量26
- 3.5小结28
- 第4章代码结构29
- 4.1目录结构和包结构29
- 4.2文件结构30
- 4.3诊断语法树34
- 4.4小结36
- 第5章通用声明39
- 5.1导入声明39
- 5.2类型声明42
- 5.3常量声明44
- 5.4变量声明46
- 5.5声明分组48
- 5.6小结49
- 第6章函数声明51
- 6.1语法规范51
- 6.2函数声明和方法声明52
- 6.3参数列表和返回值列表54
- 6.4小结55
- 第7章复合类型57
- 7.1语法规范57
- 7.2基础类型58
- 7.3指针类型61
- 7.4数组类型63
- 7.5切片类型66
- 7.6结构体类型67
- 7.7映射类型70
- 7.8管道类型71
- 7.9函数类型72
- 7.10接口类型73
- 7.11小结75
- 第8章更复杂的字面值77
- 8.1语法规范77
- 8.2函数字面值78
- 8.3复合字面值的语法80
- 8.4数组字面值和切片字面值81
- 8.5结构体字面值83
- 8.6映射字面值85
- 8.7小结86
- 第9章复合表达式87
- 9.1表达式语法87
- 9.2类型转换和函数调用88
- 9.3点选择运算90
- 9.4索引运算91
- 9.5切片运算92
- 9.6类型断言93
- 9.7小结95
- 第10章语句块和语句97
- 10.1语法规范97
- 10.2空语句块98
- 10.3表达式语句100
- 10.4返回语句101
- 10.5声明语句103
- 10.6短声明语句和多赋值语句104
- 10.7if/else分支语句106
- 10.8for循环108
- 10.9类型断言111
- 10.10go语句和defer语句113
- 10.11小结114
- 第11章类型检查115
- 11.1语义错误115
- 11.2go/types包116
- 11.3跨包的类型检查118
- 11.4小结122
- 第12章语义信息123
- 12.1名字空间123
- 12.2整体架构127
- 12.3小结128
- 第13章静态单赋值形式129
- 13.1静态单赋值简介129
- 13.2生成静态单赋值130
- 13.3静态单赋值解释执行134
- 13.4go/ssa包的架构136
- 13.5小结138
- 第14章凹语言139
- 14.1Hello,凹语言139
- 14.2访问全局变量144
- 14.3调用自定义函数153
- 14.4四则运算157
- 14.5分支控制160
- 14.6导入函数165
- 14.7小结168
- 第15章LLVM简介169
- 15.1背景介绍169
- 15.2安装LLVM171
- 15.3printf函数172
- 15.4简单的四则运算175
- 15.5比较运算176
- 15.6分支与循环177
- 15.7基本块180
- 15.8PHI指令182
- 15.9有限循环184
- 15.10小结185
- 第16章LLVM示例187
- 16.1W语言187
- 16.2W语言编译器wcc的设计189
- 16.3W语言编译器wcc的实现191
- 16.4W语言的代码示例198
- 16.5小结200
- 后记201