查看“Golang”的源代码
来自Ubuntu中文
←
Golang
跳到导航
跳到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[File:Golang.png]] golang(中文名:go语言)是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。。如果你想知道得更多,请移步至官网[http://www.golang.org/ golang官网] =golang的介绍= ==简介== Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率。 Go语言语法灵活、简洁、清晰、高效。它对的并发特性可以方便地用于多核处理器 和网络开发,同时灵活新颖的类型系统可以方便地编写模块化的系统。go可以快速编译, 同时具有垃圾内存自动回收功能,并且还支持运行时反射。Go是一个高效、静态类型, 但是又具有解释语言的动态类型特征的系统级语法。 ==应用== 由于Go尚未成熟,因此谷歌旗下各类面向用户的服务或应用都没有采用该语言。正因如此,谷歌才需要外部编程人员的协助。<br> 通过创建新的编程语言,谷歌将继续拓展计算领域的各个方面,从而促进这些领域的发展。这同样也是谷歌开发Android操作系统、Chrome浏览器和Chrome OS的动机所在。<br>北京时间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说:我不认为我们能取代任何东西。我们只是创造出这个领域的另一个角色。 ==特点== 简洁 快速 安全 并行 有趣 开源 支持泛型编程,内存管理,数组安全,编译迅速 ==go语言的开发团队== Thompson:1983年图灵奖(Turing Award)和1998年美国国家技术奖(National Medal of Technology)得主。他与Dennis Ritchie是Unix的原创者。Thompson也发明了后来衍生出C语言的B程序语言。 Pike:曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与Thompson共事多年,并共创出广泛使用的UTF-8 字元编码。 Robert Griesemer:曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。 此外还有Plan 9开发者Russ Cox、和曾改善目前广泛使用之开原码编译器GCC的Ian Taylor。 =编译环境= ==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> 上面这么多,其实也可以用软件源安装!命令如下 <pre>sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang</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> =编辑器配置= ==vim的golang高亮配置== 把$GOROOT/misc/vim/syntax/go.vim拷贝到 ~/.vim/syntax/ 和 ~/.vim/ftdetect/就行了 ==gedit的golang高亮配置== 默认的gedit好像已经有golang的高亮支持,如果你的编辑没有的话,请按以下方法安装 *下载go.lang <pre>$ wget http://go-lang.cat-v.org/text-editors/gedit/go.lang</pre> *拷贝到/usr/share/gtksourceview-2.0/language-specs <pre>$ sudo cp ./gp.lang /usr/share/gtksourceview-2.0/language-specs/ </pre> ==gedit中编译运行golang配置== 1.打开gedit软件-首选项-插件-把-外部工具-打上对号。 2.菜单栏-工具-Manage Eexternal Tools-单击“+”,名称自己随便填写,快捷键自己设置(比如F3),把下面的代码复制到右边代码区。 3.有一点必须注意gedit必须在终端中打开,而且编辑完成后.go文件后需要保存后在运行快捷键(F3)。 *例如: <pre>~$ gedit ~/projects/go/test1/hello.go</pre> *或者: <pre>~$ gedit</pre> 4.用Go自带编译器编译时,代码有3种格式,根据自己的机器(32位、64位、ARM)选择。 *32位机器代码: <pre>#!/bin/sh echo ======================== # 打印 跳转 到当前工作目录 echo $GEDIT_CURRENT_DOCUMENT_DIR cd $GEDIT_CURRENT_DOCUMENT_DIR GONAME=$GEDIT_CURRENT_DOCUMENT_NAME GOOUT=$(echo $GONAME | cut -d. -f1) echo ======================== echo 编译:$GONAME echo ======================== GOOUT8=$GOOUT".8" 8g $GONAME 8l $GOOUT8 ./8.out echo echo ========================</pre> *64位机器代码: <pre>#!/bin/sh echo ======================== # 打印 跳转 到当前工作目录 echo $GEDIT_CURRENT_DOCUMENT_DIR cd $GEDIT_CURRENT_DOCUMENT_DIR GONAME=$GEDIT_CURRENT_DOCUMENT_NAME GOOUT=$(echo $GONAME | cut -d. -f1) echo ======================== echo 编译:$GONAME echo ======================== GOOUT6=$GOOUT".6" 6g $GONAME 6l $GOOUT6 ./6.out echo echo ========================</pre> *ARM机器代码: <pre>#!/bin/sh echo ======================== # 打印 跳转 到当前工作目录 echo $GEDIT_CURRENT_DOCUMENT_DIR cd $GEDIT_CURRENT_DOCUMENT_DIR GONAME=$GEDIT_CURRENT_DOCUMENT_NAME GOOUT=$(echo $GONAME | cut -d. -f1) echo ======================== echo 编译:$GONAME echo ======================== GOOUT5=$GOOUT".5" 5g $GONAME 5l $GOOUT5 ./5.out echo echo ========================</pre> 5.用gcc编译时,所有平台代码都一样(推荐使用gcc,因为错误提示比较清楚,自己感觉吧) <pre>#!/bin/sh echo ====================================== # 打印 跳转 到当前工作目录 echo $GEDIT_CURRENT_DOCUMENT_DIR cd $GEDIT_CURRENT_DOCUMENT_DIR GONAME=$GEDIT_CURRENT_DOCUMENT_NAME echo ====================================== echo 编译:$GONAME echo ====================================== gccgo $GONAME ./a.out echo echo ======================================</pre> ==geany的golang高亮配置== 这个方法是由golang-nuts的steve horsley提供的: Copy the standard filetype_extensions.conf to your local config: *将标准的filetype_extensions.conf 拷贝到你的当前用户的配置里 <pre>$ cp /usr/share/geany/filetype_extensions.conf ~/.config/geany</pre> Add the extension recognition to ~/.config/geany/filetype_extensions.conf by adding this line: *把下面内容加入到,便于识别扩展 <pre>Go=*.go;</pre> *把C定义的filetypes.c考到 filedefs/filetypes.Go.conf <pre>$sudo cp /usr/share/geany/filetypes.c ~/.config/geany/filedefs/filetypes.Go.conf </pre> *编辑Go.conf并且更改设置和关键字,例如: <pre> [settings] # default extension used when saving files extension=go lexer_filetype=C [keywords] # all items must be in one line primary=break case chan const continue default defer else fallthrough for func go goto if import interface map package range return select struct switch type var secondary=byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float32 float64 complex64 complex128 uintptr string </pre> ==其它编辑器== 请查看此处http://go-lang.cat-v.org/text-editors/ =学习资源= ==英文网络资源== *[http://golang.org/ go语言官方] *[http://blog.golang.org/ go官方博客] *[http://go-lang.cat-v.org/ Go Programming Language Resources] *[http://www.miek.nl/files/go/ 一个老外长期更新的免费go书] ==中文网络资源== *[http://bbs.golang-china.org/ Go语言中文论坛] *[http://wiki.golang-china.org/ go语言中文wiki] *[http://golang-china.org/ Go语言中文官网] *[http://u.youku.com/golangchina 视频资源(大部分是英语的)] *[http://code.google.com/p/golang-china/ 中文文档版本库(SVN)] *[http://github.com/border/golang-chinaGitHub 与本站SVN同步(GIT)] *[http://tieba.baidu.com/f?kw=golang&fr=wwwt golang百度贴吧] *[http://code.google.com/p/ac-me/downloads/list 一个gofans翻译的学习文档] ==网络在线交流资源== *QQ群(Go编译语言):102319854 *QQ群(golang交流群):112567750 *[https://groups.google.com/group/golang-china/ 邮件列表] ==golang纸质书籍== *《Go Programming》作者:John P. Baugh 语言:英语 价格:$14 [http://www.amazon.com/Go-Programming-John-P-Baugh/dp/1453636676/ref=sr_1_1?ie=UTF8&s=books&qid=1277418225&sr=1-1 点击购买 ] *《Programming in Go: Creating Applications for the 21st Century》此书还没有出版,如果你想知道详情请点[http://www.qtrac.eu/gobook.html 这里] ==其它资源== *Chrome插件: [https://chrome.google.com/webstore/detail/bjifdepdcpccnjmmbjdonhgmagclfhme The Go Playground]
返回
Golang
。
导航菜单
页面操作
页面
讨论
阅读
查看源代码
历史
页面操作
页面
讨论
更多
工具
个人工具
登录
导航
首页
最近更改
随机页面
页面分类
帮助
搜索
编辑
编辑指南
沙盒
新闻动态
字词处理
工具
链入页面
相关更改
特殊页面
页面信息