Go开篇

228 阅读2分钟

Go

image-20210923181625037

一、why

为什么选地鼠作为吉祥物, 对应三大特性,解决的三大痛点:

开发速度快速度快
并发性好成群结队
编程简单头脑简单
image-20210923182037074

硬件上来了

  • 硬件更新频繁,性能提升快,但是编程语言没什么发展,合理利用多核多cpu的优势提升软件系统性能

编程语言跟不上

  • 现有编程语言缺点:
    1. 风格不统一
    2. 计算能力不够
    3. 处理大并发不够好
  • 软件系统复杂度高,维护成本高,缺乏足够简洁高效的编程语言
  • google维护了很多C/C++项目,运行速度虽然很快,但是编译速度很慢,还存在内存泄漏等一系列困扰需要解决

二、Who & When & Where

Google三雄

2007年,Rob PikeKen ThompsonRobert 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动态语言的快速开发

    image-20210923182049992

C继承

  • 表达式语法
  • 控制结构
  • 基础数据类型
  • 调用参数传值
  • 和C一样的编译方式以及弱化的指针

引入包

  • Go文件都要归属于一个包,不能单独存在

垃圾回收机制

  • 避免内存泄漏,内存自动回收,不需要开发人员管理

天然并发

  • 语言层面支持,实现简单

  • goroutine

    • 轻量级线程,可实现大并发处理,高效利用多核
  • 基于CPS并发模型实现

管道通信机制

  • channel实现不同的goroutine之间的相互通信

多返回值

切片slice,延时执行defer

四、How

  • 数据结构

  • 实现细节