【1.0】Go语言介绍及引入
【一】Go语言介绍
- Go语言是Google公司在2007开发一种静态强类型、编译型语言,并在2009年正式对外发布。
- 静态强类型语言
- 需要先编译再执行
- 比如C、C#、Java等语言需要先将代码编译成不同平台的可执行文件,才能在不同平台上运行
- 需要解释器
- 比如Python、PHP、node.js等语言,将代码边编译边执行
- 强类型
- go语言中,不同类型之间不允许直接运算(需要强制类型转换)
- go如何做强制类型转换(显示类型转换--代码转换)
- java:强类型(隐士类型转换--默认转换)
- 弱类型
- 比如,JS代码中允许字符串和数字运算
- Go语言以其近C的执行性能和近解析型语言的开发效率,以及近乎于完美的编译速度,已经风靡全球。
- 很多人将Go语言称为21世纪的C语言,因为Go不仅拥有C的简洁和性能,而且针对多处理器系统应用程序的编程进行了优化,很好的提供了21世纪互联网环境下服务端开发的各种实用特性。
【二】Go语言的诞生
- 事件起源于2007年9月,当时C++委员会正在Google对C++语言新增加的35个新的特性进行一场分享演讲。
- Google的技术大神们也在认真听讲座,其中就有Go语言的三个创作者,分别是:
- Robert Griesemer(罗伯特.格利茨默),
- Rob Pike(罗伯.派克),
- Ken Thompson(肯.汤普森)。
- 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,在这个思路下应运而生。
- Rob Pike他们认为:
-
2007年9月25号,Rob Pike在回家的路上得到关于新语言名字的灵感,于是给另外两人发了邮件:
-
邮件正文大意为:
- 在开车回家的路上我得到了些灵感。
- 给这门编程语言取名为“go"",它很简短,易书写。工具类可以命名为: goc、gol、goa。
- 交互式的调试工具也可以直接命名为"go”。语言文件后缀名为 .go等等
-
这就是Go语言名字的来源
- 自此之后Robert、Rob和Ken三个人开始在Google内部进行了研发
- 一直到了2009年,Go正式开源了
- Go项目团队将2009年11月10日,即该语言正式对外开源的日字作为其官方生日。
- 源代码最初托管在http://code.google.com上,之后几年才逐步的迁移到GitHub 上。
【三】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开发
-
中小型公司跟风
-
前景
- 很广阔
-
简单易学
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17825649.html