go语言(一)开始

xming4321 · · 3794 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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






有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:xming4321

查看原文:go语言(一)开始

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3794 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传