2009年11月10日 ,当我在漫无目的的在网络上聊天扯淡的时候,一个哥们,在一扯淡群发了个消息。google新出了个语言,网址是多少。
当时,没在意,翻开看看,嗯,除了记着了这个名字。别的没记得多少。
后来一直听着这名,甚至前年看到有招go程序员的,也没在意。但是去年开始发觉这玩意发酵的开始爆发了,好多地方都在说。
于是今年稍微翻了翻,发现这玩意貌似挺何意。然后这段时间买了本书一翻,呃,这玩意牛b啊。遂决定学学吧。
好先来个入门吧,来个简介:
一.从哪里来
开始不知,说出来真是大有来头。贴一个网上弄来的列表。
肯尼斯·蓝·汤普逊(Kenneth Lane Thompson,1943年2月4日-),小名为肯·汤普逊(Ken Thompson),为美国计算机科学学者,与丹尼斯·里奇同为1983年图灵奖得主。
他与丹尼斯·里奇设计了B语言、C语言,创建了Unix和Plan 9操作系统.
罗勃特·C·派克(Robert C. Pike,1956年-),昵称为罗勃·派克(Rob Pike),来自加拿大的程式设计师,曾经加入贝尔实验室,为 UNIX小组的成员。曾经参与过贝尔实验室九号计划、Inferno,与编程语言 Limbo的开发。
他与肯·汤普逊共同开发了UTF-8。
罗伯特•格里泽默(Robert Griesemer):曾协助制作Java的HotSpot编译器和Chrome浏览器的JavaScript引擎V8。
拉斯•考克斯(Russ Cox,http://swtch.com/~rsc/):参与Plan 9操作系统的开发,Google Code Search项目负责人。
伊安•泰勒(Ian Lance Taylor):GCC社区的活跃人物。gold连接器和GCC过程间优化LTO的主要设计者,Zembu公司的创始人。
布拉德•菲茨帕特里克(Brad Fitzpatrick,http://en.wikipedia.org/wiki/Brad_Fitzpatrick):LiveJournal 的创始人,著名开源项目memcached的作者。
我勒个去,这些人设计的。其设计思想深深继承了从c和linux来的思想。就我理解,其中一个核心就是kISS原则(Keep It Simple & Stupid),好多人人如果读过其源码的时候会觉得很奇怪,他们经常命名按照我们现在来说简直垃圾,好多名字第一个叫a 第二个叫a2 呵呵。这个被许多人批评,但是我觉得非常好,简单,直接,粗暴!这是一个复杂系统能够长期稳定快速的原则,什么东西尽量简单直接。
这种简单的思想体现在好多地方,例如,没有什么private public 方法名,大写开头就是表示包外可见,小写只在包内见;函数多返回值;导入的库必须用;编译的时候静态链接等等。
这些东西避免我们一些坏习惯,保证更少的犯错。我一看到这些,就发现这玩意的确好。
但是——————
由于时间还短,此语言其实也并不是所有都好,目前才是1.0版本,前些版本之间差异有些大。另外性能上比不上c,不够专业,感觉就不是一门新语言,没有好的特性等等,被好多人吐槽。但是我喜欢的是他的这些理念,简单直接的方式,更适合工程化,他所有的约定什么的比较死板,这样其实防止了大家随便乱来导致的一些问题。用简单方式实现了一些复杂的东西,没有很多的语法糖,强制的语法约定,这些东西对于工程化生产,和写出更简单直接代码来说真的是太好了。
所以,我很喜欢他,也推荐大家可以看看,如果不喜欢,了解下也不错!
二.到哪里去
上次去听了一次讲座,使得我极为震惊。本以为这个语言,目前可能只是作为程序员的玩物而已,但是我惊奇的发现在一些大公司内已经在使用了。目前我知道的是360,京东。而上海有一个不大不小的公司居然是全部都是go(为防止广告嫌疑不说名字了),其有30w行的代码量。后来才知道这个公司的技术大牛们还专门出了本go语言的书。而讲座中人家说,目前全世界搜索go最多的是在中国,其实没啥奇怪的,谁叫我们人多了。但是至少说明了,国内还是有前途的哦!
其实我第一次听到go的时候人家为我推荐的是go的并发多核的支持。当时不以为意。但是看看上面所说的三个公司中的应用基本都是在云服务上面用的。其更好的利用了现在cpu的多核,非常适合于服务端,高并发的场景。所以有人说其会是第二个c语言。虽然我对此持保留态度,但是我想说的是,其至少不会是个主流语言。
不信我们期待以后!
三.搭建环境
说了这么多,也许都是废话,还是步入正题。首先是搭建环境(也许我说的有些罗嗦,请见谅,记下细节,有时候有好处)。
首先https://code.google.com/p/go/downloads/list 找到这里(如果不能访问,请架上你的梯子,爬墙,你懂的)
其次弄清楚你的系统是32还是64 ,如果不知道自行google。(程序员这个应该是常识)
*inux:
a.简单办法(推荐)
1.下载Summary + Labels ▼ 含有liux tarball的对应版本(64位64-bit,32位32-bit)
2.解压tar zxvf go1.0.2.linux-amd64.tar.gz 到你的home目录(cd命令不带参数即到)
3.设置环境变量export PATH=$PATH:$HOME/go/bin
ok 然后你就可以敲击哈go命令。一般没有问题的。如果有问题请问google。
b.源码编译安装
1.确认你的版本够新(我在centos5.6上没编译成功,后来google到得改源码,因为旧版本的一些功能不支持导致的)
2.安装gcc还有mercurial(不详细说,既然想编译,自己多动手google)
3.用hg下载源码:$ hg clone -r release https://go.googlecode.com/hg/ go
4.编译:$ cd go/src
$ ./all.bash
5.设置环境变量
export GOROOT=$HOME/go
export GOARCH=386
export GOOS=linux
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
ok!
windows
直接下载Summary + Labels ▼ 含有Windows MSI installer的对应版本
一路下一步 就ok!
四.hello world
代码hello.go如下:
package
main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
然后go run hello.go
windows在cmd下运行。
会输出hello world
注意{ 千万要和() 在一行,否则编译不通过。另外行末没有结束符号哦!main函数是无任何参数的!这就是go语言~!
有疑问加站长微信联系(非本文作者)