查看“Golang”的源代码
来自Ubuntu中文
←
Golang
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[File:Golang.png]] golang(中文名:go语言)是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。。如果你想知道得更多,请移步至官网[http://www.golang.org/ golang官网] =golang的介绍= ==简介== Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。Go是谷歌2009发布的第二款编程语言.2009年7月份,谷歌曾发布了Simple语言,它是用来开发Android应用它是用来开发Android应用的一种BASIC语言. 北京时间2010年1月10日,Go语言摘得了TIOBE公布的2009年年度大奖。该奖项授予在2009年市场份额增长最多的编程语言。 谷歌资深软件工 程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率.”派克表示,和今天的C++或C一样,Go是一种系统语言.他解释道,“使用它可以进行快速开 发,同时它还是一个真正的编译语言,我们之所以现在将其开源,原因是我们认为它已经非常有用和强大.” 2007年,谷歌把Go作为一个20%项目开始研发,即让员工抽出本职工作之外时间的20%, 投入在该项目上.除了派克外,该项目的成员还其它一些谷歌工程师. 派克表示,编译后Go代码的运行速度与C语言非常接近,而且编译速度非常快,就像在使用一个交互式语言. 现有编程语言均未专门对多核处理器进行优化.派克表示,Go就是谷歌工程师为这类程序编写的一种语言.它不是针对编程初学者设计的,但学习使用它也不是非常困难.Go支持面向对象,而且具有真正的封装(closures)和反射 (reflection)等功能. 在学习曲线方面,派克认为Go与Java类似,对于Java开发者来说,应该能够轻松学会 Go. 之所以将Go作为一个开源项目发布,目的是让开源社区有机会创建更好的工具来使用该语言,例如 Eclipse IDE中的插件.目前还没有支持Go的IDE. 在目前谷歌公开发布的所有网络应用中,均没有使用Go.但是谷歌已经使用该语言开发了几个内部项目. 派克表示,Go是否会对谷歌即将推出的Chrome OS产生影响,现在还言之尚早,不过Go的确可以和Native Client配合使用.他表示,“Go可以让应用完美的运行在浏览器内.”例如,使用Go可以更高效的实现Wave,无论是在前端还是后台. Go 同时具有两种编译器,一种是建立在GCC基础上的Gccgo,另外一种是分别针对64位x86和32位x86计算机的一套编译器(6g和8g).谷歌目前正在研发其对ARM芯片和Android设备的支持.派克表示,“Android手机存在的问题是,我们一直没有一个数字协处理器.” ==应用== 由于Go尚未成熟,因此谷歌旗下各类面向用户的服务或应用都没有采用该语言。正因如此,谷歌才需要外部编程人员的协助。 派克说:我们需要更好的程序库和工具,而开源社区能够在这些方面为我们提供很大的帮助。 通过创建新的编程语言,谷歌将继续拓展计算领域的各个方面,从而促进这些领域的发展。这同样也是谷歌开发Android操作系统、Chrome浏览器和Chrome OS的动机所在。 北京时间2010年1月10日,Go语言摘得了TIOBE公布的2009年年度大奖。该奖项授予在2009年市场份额增长最多的编程语言。 ==功能== Google对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决若干物件取向程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助程序设计师处理琐碎但重要的内存管理问题。Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。 Go的网站就是用Go所建立,但Google有更大的野心。该软件是专为构建服务器软件所设计(如Google的Gmail)。Google认为Go还可应用到其他领域,包括在浏览器内执行软件,取代目前JavaScript的角色。 Pike说:它至少在强度上比JavaScript高一级。Google自建Chrome浏览器,部分原因就是加速JavaScript和网页表现,而Google已经融合了本身的技术,如Native Client和Gears。 Pike表示,Go另一项与网络相关的特色,是服务器和用户端设备,如PC或手机,可以分担工作。因此,使用Go的服务便可轻松适应不同的用户端处理性能。Go也可解决目前的一大挑战:多核心处理器。一般电脑程序通常依序执行,一次进行一项工作,但多核心处理器更适合同步处理许多工作。Pike说:我们自认有足够的支持,可改善这方面的问题。 Go团队正在寻求帮助。其中一个重要领域是改善Go能够使用的runtime library。这类library可提供许多工具和功能,加快程序设计的过程。而Go的library还包括许多重要的设计元素,并供应处理同作、垃圾收集和其他低层杂务的资源。 Go团队也需要编译器方面的协助。Thompson曾为32位元和64位元x86处理器,及ARM处理器写过一些编译器,Taylor也为GCC编译器写过一个Go前端。 尽管Google对Go有很大的野心,该公司也明白,这项计划无法完全取代现有的技术。Pike说:我不认为我们能取代任何东西。我们只是创造出这个领域的另一个角色。 ==特点== 简洁 快速 安全 并行 有趣 开源 支持泛型编程,内存管理,数组安全,编译迅速 =编译环境= ==golang编译器安装与配置== golang目前有两种编译,一个是golang官方提供的,另一个是gnu提供的gccgo; <b>golang官方编译器安装与配置</b> *安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 <pre>$ sudo apt-get install bison gawk gcc libc6-dev make</pre> *安装mercurial工具,目的使用hg命令来提取golang的源代码 <pre>$ sudo apt-get install mercurial</pre> *代取提取,如果您的网速比较慢的话,此步要多花点时间 <pre>$ hg clone -u release https://go.googlecode.com/hg/ go</pre> *编译golang <pre> $ cd go/src $ ./all.bash </pre> 假如正常的话,会出现下面的信息 <pre> ALL TESTS PASSED --- Installed Go for linux/amd64 in /home/you/go. Installed commands in /home/you/go/bin. *** You need to add /home/you/go/bin to your $PATH. *** The compiler is 6g. </pre> *配置系统环境 你在~/.bashrc或者 ~/.profile写入你的配置文件,下面我会以.bashrc来说明; 那么,golang要设置那些变量呢? 1、$GOROOT golang的目录,这里我们是~/go 2、$GOOS 和 $GOARCH 系统的参数 设置方法如下: <pre> $GOOS $GOARCH darwin 386 darwin amd64 freebsd 386 freebsd amd64 linux 386 linux amd64 linux arm incomplete windows 386 incomplete </pre> 3、$GOBIN golang的bin目录,这里是~/go/bin 下面是一个配置例子:请大家特别注意$GOOS 和 $GOARCH 的配置 <pre> $ gedit ~/.bashrc </pre> 然后加入 <pre> export GOROOT=~/go export GOARCH=386 export GOOS=linux epxort GOBIN=GOROOT/bin export PATH=$PATH:$GOBIN </pre> <b>gccgo安装</b> gccgo似乎是从4.6开始支持的。也就是说,要在ubuntu用命令安装gccgo只有ubuntu 11.10包括且以上的版本。 大家可以试一下命令<pre>gcc -v</pre>,查看 <pre>--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin </pre> 如果有一个go,说明你的gcc支持golang,那么就执行以下命令安装gcc-go(大家试一下这命令,我不敢确定): <pre>sudo apt-get install gcc-go</pre> 如果用源代码编译的话,请参照gcc编译。这里就不介绍了! ==Hello world== *新建一个hello.go,并写入以下内容: <pre> package main import "fmt" func main() { fmt.Printf("hello, world\n") } </pre> *使用golang官网编译器('注意:'6g是amd64的go编译器,它生成的是.6文件。而386一般使用8g命令,它生成的一般是.8格式的文件。当然还有一个5g的命令是用于arm的cpu,同理amd64用6l,386用8l,arm用5l的链接器!) <pre> $ 6g hello.go $ 6l hello.6 $ ./6.out hello, world </pre> *使用gccgo编译 <pre> $ gccgo hello.go $./a.out hello,world </pre>
返回
Golang
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息