TapirMD - 一款强大的下一代致力于简化内容创作的标记语言(比markdown强大的多;在线体验)。

首先,感谢整个 Go 社区。如果没有一个活跃和积极回应的社区,本书很难顺利完成。

特别地,我要感谢以下帮助过我理解了一些官方标准编译器和运行时中的实现细节的社区成员:Keith Randall、Ian Lance Taylor、Axel Wagner、Cuong Manh Le、Michael Pratt、Jan Mercl、Matthew Dempsky、Martin Möhrmann 等。 我很抱歉如果上述列表遗漏了某个曾在本书的写作过程中给予我帮助的成员。Go 社区有如此多友善和富有创造性的成员,以至于上述列表肯定遗漏了某些成员。

感谢所有曾经直接或者间接,有意或者无意帮助过我完成这本书的Go社区成员。

感谢 Olexandr Shalakhin 允许将其设计的完美的地鼠卡通图标之一使用在本书的封面中。 感谢 Renee French 女士设计了最初的可爱的地鼠卡通形象

感谢下列开源软件和代码库的作者。这些开源软件和代码库在生成本书的电子书版本中帮了大忙。

感谢对本书的翻译事业做出贡献的 Go 友:包括 Cylkal、 ksco、 DashJay、 dacapoday、 Darren、 itcuihao、 yeka、 Chuanxu、 zonesan 等。

感谢 ksco 对本书的初校。

感谢曾指出过本书中存在的错误或者做出修正的读者:包括 yingzewen、 ivanburak、 cortes- 等。



Go101.org网站内容包括Go编程各种相关知识(比如Go基础、Go优化、Go细节、Go实战、Go测验、Go工具等)。后续将不断有新的内容加入。敬请收藏关注期待。

本丛书微信公众号(联系方式一)名称为"Go 101"。二维码在网站首页。此公众号将时不时地发表一些Go语言相关的原创短文。各位如果感兴趣,可以搜索关注一下。

《Go语言101》系列丛书项目目前托管在Github上(联系方式二)。欢迎各位在此项目中通过提交bug和PR的方式来改进完善《Go语言101》丛书中的各篇文章。我们可以在项目目录下运行go run .来浏览和确认各种改动。

本书的twitter帐号为@Golang_101(联系方式三)。玩推的Go友可以适当关注。

你或许对本书作者老貘开发的一些App感兴趣。

The English version of this book is here.
赞赏
(《Go语言101》系列丛书由老貘从2016年7月开始编写。目前此系列丛书仍在不断改进和增容中。你的赞赏是本系列丛书和此Go101.org网站不断增容和维护的动力。)

目录:
  • 致谢
  • 关于《Go程序优化101》
  • 值部和值尺寸
    • 值尺寸
    • 内存对齐
    • 结构体字节填充
    • 避免大复制成本
  • 内存分配
    • 内存块和内存分配区域
    • 如何减少内存分配量和次数
  • 栈、堆和逃逸分析
    • 逃逸分析
    • 如何控制内存分配区域
    • 栈增长和收缩
    • 如何降低栈增长次数
  • 垃圾回收
    • 垃圾回收步幅控制
    • 如何降低垃圾回收压力
    • 控制垃圾回收频率
  • 指针
    • 3 事实和建议
  • 结构体
    • 3 事实和建议
  • 数组和切片
    • 11 事实和建议
  • 字符串和字节切片
    • 10 事实和建议
  • 边界检查消除(Bound Check Eliminate,BCE)
    • BCE起作用的情形
    • BCE不起作用的情形
    • BCE需要给出暗示才能起作用的情形
  • 映射
    • 7 事实和建议
  • 通道
    • 3 事实和建议
  • 函数
    • 如何尽量使一个函数可被内联
    • 如何使一个函数不可被内联
    • 指针和非指针参数对性能的影响
    • 具名和匿名返回结果对性能的影响
    • 10+ 事实和建议
  • 接口
    • 值装箱成本
    • 3+ 事实和建议