【1.0】Go语言介绍及引入

发布时间 2023-11-11 11:00:07作者: Chimengmeng

【一】Go语言介绍

  • Go语言是Google公司在2007开发一种静态强类型、编译型语言,并在2009年正式对外发布。
  • 静态强类型语言
    • 需要先编译再执行
      • 比如C、C#、Java等语言需要先将代码编译成不同平台的可执行文件,才能在不同平台上运行
    • 需要解释器
      • 比如Python、PHP、node.js等语言,将代码边编译边执行
    • 强类型
      • go语言中,不同类型之间不允许直接运算(需要强制类型转换)
      • go如何做强制类型转换(显示类型转换--代码转换)
      • java:强类型(隐士类型转换--默认转换)
    • 弱类型
      • 比如,JS代码中允许字符串和数字运算
  • Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度,已经风靡全球。
  • 很多人将Go语言称为21世纪的C语言,因为Go不仅拥有C的简洁和性能,而且针对多处理器系统应用程序的编程进行了优化,很好的提供了21世纪互联网环境下服务端开发的各种实用特性。

01

【二】Go语言的诞生

  • 事件起源于2007年9月,当时C++委员会正在Google对C++语言新增加的35个新的特性进行一场分享演讲。
  • Google的技术大神们也在认真听讲座,其中就有Go语言的三个创作者,分别是:
    • Robert Griesemer(罗伯特.格利茨默),
    • Rob Pike(罗伯.派克),
    • Ken Thompson(肯.汤普森)。

02

  • Rob Pike(罗伯.派克)
    • 罗布·派克是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M.Ritche(C语言之父)开发Unix的猛人,UTF-8的设计人。让人佩服不已的是、罗伯伯还是1980年奥运会射箭的银牌得主。
  • Ken Thompson(肯.汤普森)
    • Ken Thompson,C语言前身B语言的作者、与Dennis Ritchie是Unix的原创者。1983年图灵奖得主以及1998年美国国家技术奖(National Metal of Technology)得主。
  • Robert Griesemer(罗伯特.格利茨默)
    参与制作了Java的HotSpot编译器以及Chrome览器的javascript的搜索引擎V8。
  • 随着会议的中场休息,大家开始了对这些C+语言新特性是否带来更多的价值进行吐槽。

    • Rob Pike他们认为:
      • 简化语言的成就远大于添加功能。
    • 于是,一门新的语言,Go,在这个思路下应运而生。
  • 2007年9月25号,Rob Pike在回家的路上得到关于新语言名字的灵感,于是给另外两人发了邮件:

03

  • 邮件正文大意为:

    • 在开车回家的路上我得到了些灵感。
    • 给这门编程语言取名为“go"",它很简短,易书写。工具类可以命名为: goc、gol、goa。
    • 交互式的调试工具也可以直接命名为"go”。语言文件后缀名为 .go等等
  • 这就是Go语言名字的来源

    • 自此之后Robert、Rob和Ken三个人开始在Google内部进行了研发
    • 一直到了2009年,Go正式开源了
    • Go项目团队将2009年11月10日,即该语言正式对外开源的日字作为其官方生日。
    • 源代码最初托管在http://code.google.com上,之后几年才逐步的迁移到GitHub 上。

04

【三】Go语言的版本

【1】概览

  • Go1.0 一2012年3月:
    • Go的第一个版本、带着一份兼容性说明文档来保证与未来发布版本的兼容性.进而不会破坏已有的程序。
  • Go 1.1 —2013年5月:
    • 这个Go版本专注于优化语言(编译器、gc、map、go调度器)和提升它的性能。
  • Go1.3一2014年6月:
    • 这个版本对栈管理做了重要的改进。栈可以申请l连续的内存片段.提高了分配的效率
  • Go 1.4-2014年12月:
    • 此版本带来了官方对 Android的支持、让我们可以只用Go代码就能写出简单的Android程序。
  • Go 1.7 -2016年8月:这个版本发布了context包,为用户提供了处理超时和任务取消的方法。
  • Go 1.11 -2018年8月:
    • Go 1.11带来了一个重要的新功能:Go modules。

【2】重要的发展节点

  • 2012年3月28日 go1 —— 稳定版版本的发布
  • 2015年8月19日 go1.5 —— 实现的架构变化,同时保留了和旧版本的兼容性,本次更新中移除了”最后残余的C代码”---》自举
  • 2018年8月24日 go1.11 —— modules支持,摒弃掉go path的包管理
  • 2020 年 2 月 go 1.14— — 现在 Go Module 已经可以用于生产环境
  • 至今:1.17.6 开始支持泛型(需要额外操作)

【四】Go语言的特性

  • 跨平台的编译型语言(交叉编译)
  • 语法接近C语言
  • 管道(channel),切片(slice),并发(routine)--》线程池+协程
  • 有垃圾回收的机制(GC)
  • 支持面向对象和面向过程的编程模式
    • (继承,封装,多态)

【五】Go语言应用领域

  • 服务端开发

    • 高并发
  • 微服务方向

  • 区块链开发

    • 第一款开源的区块链软件是用go写的
  • 自动化运维

    • docker,k8s二开
  • 云平台

  • 各个互联网公司都会招go开发

  • 中小型公司跟风

  • 前景

    • 很广阔
  • 简单易学