Go语言简介

Go语言简介

下一篇:Go环境搭建



前言

Go(又称 Golang)是 Google 的 Robert GriesemerRob PikeKen Thompson 开发的一种静态强类型编译型 语言。Go 语言语法与 C 相近,但功能上有:内存安全GC(垃圾回收),结构形态及 CSP-style 并发 计算。


一 诞生

1966年,Ken Thompson 就职于贝尔实验室,参与了 MULTICS 项目,独自开发了 B 语言,并利用一个月时间用B语言开发了一个精简的操作系统,起名 UNICS。后来,同事 Dennis Ritchie 基于 B 语言发明了 C 语言。他们一起用 C 重写了 Unix 系统

Rob Pike 是贝尔实验室 Unix 组成员,也是《Unix环境编程》和《程序设计实践》作者之一。1992年和 Ken Thompson 共同设计了 UTF-8 编码。2002 年加入 Google,研究操作系统。

2006年,Ken Thompson加入Google。2007年9月20日,身处 Google 的 Rob Pike 对不断扩充新特性的 C++ 非常不满,与 Robert Grieseme r(之前参与 JavaScript V8 引擎和 Java HotSpot 虚拟机)、Ken Thompson 进行了一次关于设计一门新语言的讨论。第二天,三人继续进行了对新语言设计的讨论会,并在会后有 Robert Griesemer 发出了一封邮件,总结了设计思路:要在 C 语言基础上,修正一些明显缺陷,删除一些被诟病的特征,增加一些缺失的功能

2007年9月25日,Rob Pike 在一封回复邮件中把新语言命名为 Go

2009年10月30日,Go语言首次公之于众

2009年 11 月 10 日正式开源,这一天被 Go 官方确定为 Go 语言诞生日

Go 语言也拥有了自己的 吉祥物(Rob Pike夫人Renee French设计的地鼠)。Go程序员被称为 Gopher

二 主要版本

2012年3月28日,Go 1.0正式发布

2015年8月19日,Go 1.5这个里程碑版本发布。

  • Go不在依赖C编译器,Go编译器和运行时都使用Go代码了,实现了自举
  • GOMAXPROCS 的默认值1 改为运行环境的CPU核数

2018年8月25日,Go1.11版本发布

  • 引入Go Module包管理机制

2021年2月18日,Go 1.16版本发布

  • Go Module-aware 模式成为默认模式,即 GO111MODULE 默认从 auto 改为 on
  • go build/run 命令不再自动更新 go.mod 和 go.sum 文件

2022年3月15日,Go 1.18版本发布

  • 引入了 泛型 Generic
  • 支持 工作区 Workspace

设计理念

其它语言的弊端

  • 对多核CPU缺乏支持。很多语言诞生过早,还停留在单核CPU时代,未对多核CPU并行做优化
  • C语言等原生语言缺乏好的依赖管理(C语言依赖头文件)
  • Java、C++等语言过于笨重。很小一个需求,也需要很多代码,甚至需要引入很重的框架
  • C、C++ 没有提供垃圾回收,这对很多程序员来说并不友好

Go设计者推崇 “最小方式” 思维,即一件事仅有一种方式,或尽可能少的方式去完成。目的是减少开发人员选择的痛苦,减少理解别人选择的苦恼

  • 仅有25个关键字,简洁的语法
  • 内置垃圾回收器,大大降低程序员管理内存的负担
  • 去除隐式类型转换、去除指针算数,提高语言健壮性
  • 首字母大小写决定可见性,通过约定而不是声明告诉开发者,提高阅读效率
  • 故意 不支持函数默认参数,必须明确每个参数意义,提高设计的清晰度和代码可读性
  • 没有面向对象的类,也没有子类,没有构造函数和析构函数
  • 偏好 组合
  • 任何命名类型都可以拥有方法
  • 接口只是方法的集合,其实现是隐式的(无需 implements 显示声明)
  • n--n++ 都是语句,不是表达式。没有--n++n
  • 没有 三元运算符
  • 内存总是初始化为零值
  • 没有异常
  • 内置字符串、切片、map等类型
  • 内置并发支持,对多核计算机支持友好。goroutine、channel、select就是为并发而生的
  • 官方提供了丰富的工具链,涵盖了编译、编辑、依赖获取、调试、文档、性能分析等诸多方面

总结

本节介绍了 Go 的诞生以及其发展的主要版本变化。简述了 Go 语言的设计理念

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程进阶之路

感谢打赏, 谢谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值