Golang:修订间差异
Maomaoispan(留言 | 贡献) |
|||
(未显示10个用户的13个中间版本) | |||
第1行: | 第1行: | ||
[[File:Golang.png]] | [[File:Golang.png]] | ||
golang(中文名:go语言)是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。。如果你想知道得更多,请移步至官网[http://www.golang.org/ golang官网] | golang(中文名:go语言)是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。。如果你想知道得更多,请移步至官网[http://www.golang.org/ golang官网] | ||
<i>网络搜索相关资料时,请使用约定的golang作为关键字(因为go关键字的干扰太多)。</i> | |||
=golang的介绍= | =golang的介绍= | ||
==简介== | ==简介== | ||
第33行: | 第35行: | ||
<b>golang官方编译器安装与配置</b> | <b>golang官方编译器安装与配置</b> | ||
<b>从仓库安装(apt-get)</b> | |||
<pre> | |||
sudo apt-get install golang | |||
</pre> | |||
如果上面的命令执行不了的话,可以尝试以下命令 | |||
<pre> | |||
sudo add-apt-repository ppa:gophers/go | |||
sudo apt-get update | |||
sudo apt-get install golang-stable | |||
</pre> | |||
<b>从源代码编译安装</b> | |||
*安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 | *安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 | ||
<pre>$ sudo apt-get install bison gawk gcc libc6-dev make</pre> | <pre>$ sudo apt-get install bison gawk gcc libc6-dev make</pre> | ||
第38行: | 第53行: | ||
<pre>$ sudo apt-get install mercurial</pre> | <pre>$ sudo apt-get install mercurial</pre> | ||
*代取提取,如果您的网速比较慢的话,此步要多花点时间 | *代取提取,如果您的网速比较慢的话,此步要多花点时间 | ||
<pre>$ hg clone - | <pre>$ hg clone -r release https://go.googlecode.com/hg/ go</pre> | ||
*编译golang | *编译golang | ||
<pre> | <pre> | ||
第81行: | 第96行: | ||
然后加入 | 然后加入 | ||
<pre> | <pre> | ||
export GOROOT= | export GOROOT=~/go | ||
export GOARCH=386 | export GOARCH=386 | ||
export GOOS=linux | export GOOS=linux | ||
export GOBIN=$GOROOT/bin/ | |||
export PATH=$PATH:$GOBIN | export GOTOOLS=$GOROOT/pkg/tool/ | ||
export PATH=$PATH:$GOBIN:$GOTOOLS | |||
</pre> | </pre> | ||
<b>gccgo安装</b> | <b>gccgo安装</b> | ||
gccgo似乎是从4.6开始支持的。也就是说,要在ubuntu用命令安装gccgo只有ubuntu 11.10包括且以上的版本。 | gccgo似乎是从4.6开始支持的。也就是说,要在ubuntu用命令安装gccgo只有ubuntu 11.10包括且以上的版本。 | ||
第92行: | 第110行: | ||
<pre>--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin </pre> | <pre>--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin </pre> | ||
如果有一个go,说明你的gcc支持golang,那么就执行以下命令安装gcc-go(大家试一下这命令,我不敢确定): | 如果有一个go,说明你的gcc支持golang,那么就执行以下命令安装gcc-go(大家试一下这命令,我不敢确定): | ||
<pre>sudo apt-get install | <pre>sudo apt-get install gccgo</pre> | ||
如果用源代码编译的话,请参照gcc编译。这里就不介绍了! | 如果用源代码编译的话,请参照gcc编译。这里就不介绍了! | ||
==Hello world== | ==Hello world== | ||
*新建一个hello.go,并写入以下内容: | *新建一个hello.go,并写入以下内容: | ||
第123行: | 第142行: | ||
把$GOROOT/misc/vim/syntax/go.vim拷贝到 ~/.vim/syntax/ 和 ~/.vim/ftdetect/就行了 | 把$GOROOT/misc/vim/syntax/go.vim拷贝到 ~/.vim/syntax/ 和 ~/.vim/ftdetect/就行了 | ||
==gedit的golang高亮配置== | ==gedit的golang高亮配置== | ||
默认的gedit好像已经有golang的高亮支持,如果你的编辑没有的话,请按以下方法安装 | |||
*下载go.lang | *下载go.lang | ||
<pre>$ wget http://go-lang.cat-v.org/text-editors/gedit/go.lang</pre> | <pre>$ wget http://go-lang.cat-v.org/text-editors/gedit/go.lang</pre> | ||
*拷贝到/usr/share/gtksourceview-2.0/language-specs | *拷贝到/usr/share/gtksourceview-2.0/language-specs | ||
<pre>$ sudo cp ./ | <pre>$ sudo cp ./go.lang /usr/share/gtksourceview-2.0/language-specs/ </pre> | ||
== | |||
==gedit中编译运行golang配置== | |||
1.打开gedit软件-首选项-插件-把-外部工具-打上对号。 | 1.打开gedit软件-首选项-插件-把-外部工具-打上对号。 | ||
第141行: | 第161行: | ||
<pre>~$ gedit</pre> | <pre>~$ gedit</pre> | ||
4. | 4.用Go自带编译器编译时,代码有3种格式,根据自己的机器(32位、64位、ARM)选择。 | ||
*32位机器代码: | *32位机器代码: | ||
第158行: | 第178行: | ||
8l $GOOUT8 | 8l $GOOUT8 | ||
./8.out | ./8.out | ||
echo | |||
echo ========================</pre> | echo ========================</pre> | ||
第175行: | 第196行: | ||
6l $GOOUT6 | 6l $GOOUT6 | ||
./6.out | ./6.out | ||
echo | |||
echo ========================</pre> | echo ========================</pre> | ||
第192行: | 第214行: | ||
5l $GOOUT5 | 5l $GOOUT5 | ||
./5.out | ./5.out | ||
echo | |||
echo ========================</pre> | 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高亮配置== | ==geany的golang高亮配置== | ||
第249行: | 第288行: | ||
==其它资源== | ==其它资源== | ||
*Chrome插件: [https://chrome.google.com/webstore/detail/bjifdepdcpccnjmmbjdonhgmagclfhme The Go Playground] | *Chrome插件: [https://chrome.google.com/webstore/detail/bjifdepdcpccnjmmbjdonhgmagclfhme The Go Playground] | ||
[[category:golang]][[category:编程语言]] |
2013年12月1日 (日) 08:55的最新版本
golang(中文名:go语言)是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。。如果你想知道得更多,请移步至官网golang官网
网络搜索相关资料时,请使用约定的golang作为关键字(因为go关键字的干扰太多)。
golang的介绍
简介
Go语言是由Google开发的一个开源项目,目的之一为了提高开发人员的编程效率。 Go语言语法灵活、简洁、清晰、高效。它对的并发特性可以方便地用于多核处理器 和网络开发,同时灵活新颖的类型系统可以方便地编写模块化的系统。go可以快速编译, 同时具有垃圾内存自动回收功能,并且还支持运行时反射。Go是一个高效、静态类型, 但是又具有解释语言的动态类型特征的系统级语法。
应用
由于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说:我不认为我们能取代任何东西。我们只是创造出这个领域的另一个角色。
特点
简洁 快速 安全 并行 有趣 开源 支持泛型编程,内存管理,数组安全,编译迅速
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;
golang官方编译器安装与配置
从仓库安装(apt-get)
sudo apt-get install golang
如果上面的命令执行不了的话,可以尝试以下命令
sudo add-apt-repository ppa:gophers/go sudo apt-get update sudo apt-get install golang-stable
从源代码编译安装
- 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的
$ sudo apt-get install bison gawk gcc libc6-dev make
- 安装mercurial工具,目的使用hg命令来提取golang的源代码
$ sudo apt-get install mercurial
- 代取提取,如果您的网速比较慢的话,此步要多花点时间
$ hg clone -r release https://go.googlecode.com/hg/ go
- 编译golang
$ cd go/src $ ./all.bash
假如正常的话,会出现下面的信息
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.
*配置系统环境 你在~/.bashrc或者 ~/.profile写入你的配置文件,下面我会以.bashrc来说明; 那么,golang要设置那些变量呢? 1、$GOROOT golang的目录,这里我们是~/go 2、$GOOS 和 $GOARCH 系统的参数 设置方法如下:
$GOOS $GOARCH darwin 386 darwin amd64 freebsd 386 freebsd amd64 linux 386 linux amd64 linux arm incomplete windows 386 incomplete
3、$GOBIN golang的bin目录,这里是~/go/bin 下面是一个配置例子:请大家特别注意$GOOS 和 $GOARCH 的配置
$ gedit ~/.bashrc
然后加入
export GOROOT=~/go export GOARCH=386 export GOOS=linux export GOBIN=$GOROOT/bin/ export GOTOOLS=$GOROOT/pkg/tool/ export PATH=$PATH:$GOBIN:$GOTOOLS
gccgo安装
gccgo似乎是从4.6开始支持的。也就是说,要在ubuntu用命令安装gccgo只有ubuntu 11.10包括且以上的版本。
大家可以试一下命令
gcc -v
,查看
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin
如果有一个go,说明你的gcc支持golang,那么就执行以下命令安装gcc-go(大家试一下这命令,我不敢确定):
sudo apt-get install gccgo
如果用源代码编译的话,请参照gcc编译。这里就不介绍了!
Hello world
- 新建一个hello.go,并写入以下内容:
package main import "fmt" func main() { fmt.Printf("hello, world\n") }
- 使用golang官网编译器('注意:'6g是amd64的go编译器,它生成的是.6文件。而386一般使用8g命令,它生成的一般是.8格式的文件。当然还有一个5g的命令是用于arm的cpu,同理amd64用6l,386用8l,arm用5l的链接器!)
$ 6g hello.go $ 6l hello.6 $ ./6.out hello, world
- 使用gccgo编译
$ gccgo hello.go $./a.out hello,world
编辑器配置
vim的golang高亮配置
把$GOROOT/misc/vim/syntax/go.vim拷贝到 ~/.vim/syntax/ 和 ~/.vim/ftdetect/就行了
gedit的golang高亮配置
默认的gedit好像已经有golang的高亮支持,如果你的编辑没有的话,请按以下方法安装
- 下载go.lang
$ wget http://go-lang.cat-v.org/text-editors/gedit/go.lang
- 拷贝到/usr/share/gtksourceview-2.0/language-specs
$ sudo cp ./go.lang /usr/share/gtksourceview-2.0/language-specs/
gedit中编译运行golang配置
1.打开gedit软件-首选项-插件-把-外部工具-打上对号。
2.菜单栏-工具-Manage Eexternal Tools-单击“+”,名称自己随便填写,快捷键自己设置(比如F3),把下面的代码复制到右边代码区。
3.有一点必须注意gedit必须在终端中打开,而且编辑完成后.go文件后需要保存后在运行快捷键(F3)。
- 例如:
~$ gedit ~/projects/go/test1/hello.go
- 或者:
~$ gedit
4.用Go自带编译器编译时,代码有3种格式,根据自己的机器(32位、64位、ARM)选择。
- 32位机器代码:
#!/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 ========================
- 64位机器代码:
#!/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 ========================
- ARM机器代码:
#!/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 ========================
5.用gcc编译时,所有平台代码都一样(推荐使用gcc,因为错误提示比较清楚,自己感觉吧)
#!/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 ======================================
geany的golang高亮配置
这个方法是由golang-nuts的steve horsley提供的: Copy the standard filetype_extensions.conf to your local config:
- 将标准的filetype_extensions.conf 拷贝到你的当前用户的配置里
$ cp /usr/share/geany/filetype_extensions.conf ~/.config/geany
Add the extension recognition to ~/.config/geany/filetype_extensions.conf by adding this line:
- 把下面内容加入到,便于识别扩展
Go=*.go;
- 把C定义的filetypes.c考到 filedefs/filetypes.Go.conf
$sudo cp /usr/share/geany/filetypes.c ~/.config/geany/filedefs/filetypes.Go.conf
- 编辑Go.conf并且更改设置和关键字,例如:
[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
其它编辑器
请查看此处http://go-lang.cat-v.org/text-editors/
学习资源
英文网络资源
中文网络资源
网络在线交流资源
- QQ群(Go编译语言):102319854
- QQ群(golang交流群):112567750
- 邮件列表
golang纸质书籍
- 《Go Programming》作者:John P. Baugh 语言:英语 价格:$14
- 《Programming in Go: Creating Applications for the 21st Century》此书还没有出版,如果你想知道详情请点这里
其它资源
- Chrome插件: The Go Playground