golang是谷歌2009年发布的开源编程语言,截止目前go的release版本已经到了1.10。go语言的开发人员都是计算机界大神一般的存在:
Thompson:1983年图灵奖(TuringAward)和1998年美国国家技术奖(NationalMedalofTechnology)得主。他与DennisRitchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言。
Pike:曾是贝尔实验室(BellLabs)的Unix团队,和Plan9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8字元编码。
RobertGriesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。
RussCox:Plan9开发者
IanTaylor:曾改善已广泛使用之开源码编译器GCC
go语言目前可以达到c/c++80%的性能,远快于c/c++的编译速度,目前很火的开源软件docker、kubernetes、lxd等软件都是使用go语言编写的,而且2016年Go语言被评为年度编程语言,可见go的应用场景非同一般。
golang和go的区别
golang和go言语没有区别,golang是go言语的别名。Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有废物收回功用的编程言语。
描述
Go的语法接近C言语,但对于变量的声明有所不同。Go支撑废物收回功用。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取相似模型的其他言语包含Occam和Limbo,但它也具有Pi运算的特征,比如通道传输。在1.8版别中开放插件(Plugin)的支撑,这意味着现在能从Go中动态加载部分函数。
与C++相比,Go并不包含如枚举、反常处理、继承、泛型、断语、虚函数等功用,但增加了切片(Slice)型、并发、管道、废物收回、接口(Interface)等特性的言语级支撑。Go2.0版别将支撑泛型,对于断语的存在,则持负面情绪,同时也为自己不提供类型继承来辩护。
不同于Java,Go内嵌了相关数组(也称为哈希表(Hashes)或字典(Dictionaries)),就像字符串类型相同。
golang的特点
语法简练
Go言语简单易学,学习曲线平缓,不需求像C/C++言语动辄需求两到三年的学习期。Go言语被称为“互联网年代的C言语”。Go言语的风格相似于C言语。其语法在C言语的基础上进行了大幅的简化,去掉了不需求的表达式括号,循环也只有for一种表示办法,就可以完成数值、键值等各种遍历。
代码风格统一
Go言语提供了一套格式化东西——gofmt。一些Go言语的开发环境或者编辑器在保存时,都会运用格式化东西进行修改代码的格式化,这样就确保了不同开发者提交的代码都是统一的格式。
履行性能好
Go言语是一门编译型的言语,我们编写好的代码直接编译成服务器可以履行的二进制可履行文件。
开发效率高
Go言语虽然是一门编译型的言语,但是它内置了废物收回机制,降低了开发者的心智担负,使其具有像Python、PHP等解释性言语的相同的开发效率。真正完成了开发效率和履行效率的完美结合。
天然生成支撑并发
Go于2009年发布,当时多核处理器现已上市。Go言语在多核并发上具有原生的设计优势,Go言语从底层原生支撑并发,无须第三方库、开发者的编程技巧和开发经历。
编撰风格
在Go中有几项规定,而且这些是强制的,当不匹配以下规定时编译将会发生过错。
每行程序完毕后不需求编撰分号(;)。
大括号({)不可以换行放置。
if判别式和for循环不需求以小括号包覆起来。
Go亦有内置gofmt东西,可以主动整理代码剩余的空白、变量名称对齐、并将对齐空格转换成Tab。
编译器
当时有两个Go编译器分支,分别为官方编译器gc和gccgo。官方编译器在初期运用C写成,后用Go重写然后完成自举。Gccgo是一个运用规范GCC作为后端的Go编译器。
官方编译器支撑跨平台编译(但不支撑CGO),答应将源代码编译为可在目标系统、架构上履行的二进制文件。