
一、why
为什么选地鼠作为吉祥物, 对应三大特性,解决的三大痛点:
| 开发速度快 | 速度快 |
| 并发性好 | 成群结队 |
| 编程简单 | 头脑简单 |
硬件上来了
- 硬件更新频繁,性能提升快,但是编程语言没什么发展,合理利用多核多cpu的优势提升软件系统性能
编程语言跟不上
- 现有编程语言缺点:
- 风格不统一
- 计算能力不够
- 处理大并发不够好
- 软件系统复杂度高,维护成本高,缺乏足够简洁高效的编程语言
- google维护了很多C/C++项目,运行速度虽然很快,但是编译速度很慢,还存在内存泄漏等一系列困扰需要解决
二、Who & When & Where
Google三雄
2007年,Rob Pike、Ken Thompson、Robert Grisemer准备开始设计全新的语言
2015年8月,Go1.5版本发布,移除了最后参与的C代码
2009年,googel将Go语言以开放源代码的方式向全球发布
2017年2月,Go1.8发布
2017年8月,Go1.9版发布 1.9.2
2018年2月,Go1.10发布
三、what
Go = C + Python
-
既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发
C继承
- 表达式语法
- 控制结构
- 基础数据类型
- 调用参数传值
- 和C一样的编译方式以及弱化的指针
引入包
- Go文件都要归属于一个包,不能单独存在
垃圾回收机制
- 避免内存泄漏,内存自动回收,不需要开发人员管理
天然并发
-
语言层面支持,实现简单
-
goroutine- 轻量级线程,可实现大并发处理,高效利用多核
-
基于CPS并发模型实现
管道通信机制
channel实现不同的goroutine之间的相互通信
多返回值
切片slice,延时执行defer
四、How
-
数据结构
-
实现细节