11. Golang 编译器 - 写在最后

至此,整个 Go 编译器的系列文章就结束了。作者在阅读Go编译器代码及写作过程中,深感本文所囊括的知识只是整个编译器的九牛一毛,并且由于能力的限制,本文只能浅略地介绍编译器各个步骤的实现策略,对于很多方面,尚且无法站在架构的层面上看清楚设计初衷以及以后的发展方向。而且 Go 语言的开发工作一直非常活跃,由于精力限制,作者也无法保证各个章节的知识以及引用的代码一直与 Go 的代码库保持一致。但总体而言,编译器大的功能模块一般不会发生大的变化,而且上述各个章节中我们都着重介绍了代码的入口、数据结构、以及处理的核心思路,并且专门讲解了如何利用 UT 进行测试,希望本文能为想要一探 Go 编译器内幕的同学提供一些思路。

另外,Go Team 对于编译器设计与实现的文档工作做得并不是太好,可能是因为编译器的开发工作大部分局限在 Go 的团队内部,所以很多设计、讨论、以及文档都没有被系统地整理下来,这对想要系统学习该部分知识的其他用户而言确实造成了一定障碍。但 Go 的邮件组非常活跃,如果读者在学习过程中遇到了自己无法解答的问题,可以通过 https://groups.google.com/g/golang-nutshttps://groups.google.com/g/golang-dev 两个邮件组获取帮助,很多真神都在这两个邮件组热心地帮助大家,默默地推动着 Go 社区的发展。

对于 Go 很多语言特性方面的设计,可以通过 https://github.com/golang/proposal 或者 Github Issues 板块查看对应的 Proposal。

感谢阅读!

最后更新于