Go语言是罗布·派克(Rob Pike),罗伯特·格瑞史莫(Robert Griesemer),及肯·汤普逊于2007年9月开始设计的编程语言,稍后Ian Lance Taylor, Russ Cox加入项目中。Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后追加Windows系统下的实现。
Go语言就如同C和Python中间的完美结合。
如果你是Python爱好者,又追求代码的速度和并行化,那么简单说,Go语言就是为你设计的。
Go语言有很浓厚的C的遗风,尽量屏蔽C++和Java的影响,比如没有独立的OO体系(并不是说不能OO)。
一切以struct为中心,没有exceptions(Oh yes!),仍然有指针,等等。
但是,Go语言又吸取了很多新语言的精华,并带有自己独特的设计。
1.规范的语法(不需要符号表来解析)
2.垃圾回收(独有)
3.无头文件
4.明确的依赖
5.无循环依赖
6.常量只能是数字
7.int和int32是两种类型
8.字母大小写设置可见性(letter case sets visibility)
9.任何类型(type)都有方法(不是类型)
10.没有子类型继承(不是子类)
11.包级别初始化以及明确的初始化顺序
12.文件被编译到一个包里
13.包package-level globals presented in any order
14.没有数值类型转换(常量起辅助作用)
15.接口隐式实现(没有“implement”声明)
16.嵌入(不会提升到超类)
17.方法按照函数声明(没有特别的位置要求)
18.方法即函数
19.接口只有方法(没有数据)
20.方法通过名字匹配(而非类型)
21.没有构造函数和析构函数
22.postincrement(如++i)是状态,不是表达式
23.没有preincrement(i++)和predecrement
24.赋值不是表达式
25.明确赋值和函数调用中的计算顺序(没有“sequence point”)
26.没有指针运算
27.内存一直以零值初始化
28.局部变量取值合法
29.方法中没有“this”
30.分段的堆栈
31.没有静态和其它类型的注释
32.没有模板
33.没有异常
34.内建string、slice和map
35.数组边界检查