现在的位置: 首页 > 综合 > 正文

go语言(一)开始

2013年03月15日 ⁄ 综合 ⁄ 共 3026字 ⁄ 字号 评论关闭

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语言~!



【上篇】
【下篇】

抱歉!评论已关闭.