Go语言101
《Go语言101》是一本着墨于Go语法语义以及运行时相关知识点的编程指导书(Go 1.15就绪)。 此书旨在尽可能地帮助Go程序员更深更全面地理解Go语言。 此书也搜集了Go语言和Go编程中的很多细节。 此书同时适合Go初学者和有一定经验的Go程序员阅读。
- English version is here.
- 此项目源代码目前托管在Github上。 你可以将代码拉取到本地并在项目目录下运行
go run .
命令来启动一个本地服务器来阅读本书以获取更好的阅读体验。 - 本书微信公众号名称为”Go 101”。此公众号将时不时地发表一些Go语言相关的原创短文。各位如果感兴趣,可以搜索关注一下。
- 本书由老貘历时三年写成。目前本书仍在不断改进和增容中。 你的赞赏是本书和Go101.org网站不断增容和维护的动力。
2020/09/06: 本书曾经提到使用append来克隆切片常常比使用make+copy来克隆切片 高效得多。但是从官方工具链1.15版本开始,官方标准编译器对后者进行了特殊的优化,从而使得后者总是比前者高效。
2020/08/13: 更正:字符串和字节切片之间的转换的编译器优化一节曾列出 “一个在映射元素索引语法中被用做键值的从字节切片到字符串的转换(不需复制底层字节)”。实际上此优化只对元素读取索引语法有效。 目前描述和代码一并得到了更正。
目录:
- 关于Go语言101 - 为什么写这本书
Go语言简介 - 为什么Go语言值得学习
Go官方工具链 - 如何编译和运行Go程序
Go编程入门
- 程序源代码基本元素介绍
- 关键字和标识符
- 基本类型和它们的字面量表示
- 常量和变量 - 顺便介绍了类型不确定值和类型推断
- 运算操作符 - 介绍了更多的类型推断规则
- 函数声明和调用
- 代码包和包引入
- 表达式、语句和简单语句
- 基本流程控制语法
- 协程、延迟函数调用、以及恐慌和恢复
Go类型系统
一些专题
并发编程
- 并发同步概述
- 通道用例大全
- 如何优雅地关闭通道
- 其它并发同步技术 - 如何使用
sync
标准库包 - 原子操作 - 如何使用
sync/atomic
标准库包 - Go中的内存顺序保证
- 一些常见并发编程错误
内存相关
一些总结