GO语言初探
简介:一直想去研究一下Google牛人们搞出来的GO语言,终于在看了《Go语言之父谈Go:大道至简》这篇文章之后,安耐不住好奇,来体验一下GO语言是什么东西!
1.安装环境ubuntu10.04
2.安装Go的版本控制工具----这是为了下载Go语言的安装源码
~$:sudo apt-get install mercurial
~$ hg
分布式软件配置管理工具 - 水银
基本命令:
add add the specified files on the next commit
annotate show changeset information by line for each file
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log show revision history of entire repository or files
merge merge working directory with another revision
pull pull changes from the specified source
push push changes to the specified destination
remove remove the specified files on the next commit
serve export the repository via HTTP
status show changed files in the working directory
summary summarize working directory state
update update working directory
使用 "hg help" 获得全部命令的列表,或 "hg -v" 获得详细信息
不错,一个版本管理工具,发现和git差不多
3.设置Go安装编译环境
~$:vim .bashrc
在文件最后添加如下内容:
GOROOT="$HOME/Go"#$HOME=/home/username
export GOROOT
GOOS=linux#系统
export GOOS
GOARCH=386#平台
export GOARCH
GOBIN="$HOME/bin"
export GOBIN
PATH=$PATH:$GOBIN#保证正确编译安装
wq保存推出
4.在配置好环境后利用第2步安装的版本控制工具下载GO源码
~$:hg clone -r release https://go.googlecode.com/hg/ $GOROOT
完成后在$HOME目录下可以看到Go目录,里面放置了下载的Go语言的源码
5.编译下载的Go源码
~$cd $GOROOT/src
~$./all.bash
执行完成后到$GOBIN目录
~$cd $GOBIN
~$ls
go godoc gofmt
发现已经安装了go的相关可执行文件
可以测试go命令
~$ go
Go is a tool for managing Go source code.
Usage:
go command [arguments]
The commands are:
build compile packages and dependencies
clean remove object files
doc run godoc on package sources
env print Go environment information
fix run go tool fix on packages
fmt run gofmt on package sources
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet run go tool vet on packages
Use "go help [command]" for more information about a command.
Additional help topics:
gopath GOPATH environment variable
packages description of package lists
remote remote import path syntax
testflag description of testing flags
testfunc description of testing functions
Use "go help [topic]" for more information about that topic.
6.写一个简单的例子来验证一下Go的编译链接执行过程
在任意目录下建立hello.go文件,内容如下:
package main
import "fmt"
func main() {
fmt.Printf("Hello, world;\n");
}
然后使用8g hello.go去编译,使用8l hello.8去链接,在执行./8.out
发现这里的8g(386平台)和8l(386平台)都不识别,没有该命令
到GOROOT目录下,寻找一下8g、8l
~/Go$ find ./ -name "8g"
./src/cmd/8g
./.hg/store/data/src/cmd/8g
./pkg/tool/linux_386/8g
发现在./pkg/tool/linux_386/下面有相关命令,二话不说把目录下的所以
可执行命令文件拷贝到$GOBIN目录下
~/Go$ cp ./pkg/tool/linux_386/* $GOBIND
这里不知道为什么在执行./all.bash的时候为什么没有做拷贝,我想要我
去设计时我会这么做的;
好了这时候再去做:编译、链接、执行就可以得到结果了
7.最后验证一下安装Go语言是否完全正确
到$GOROOT目录下有个test的目录下执行run脚本
~$cd $GOROOT/test
~/Go/test$ ./run
0 known bugs; 0 unexpected bugs
OK!没有bug,没有异常;
补充一下:
Go编译器可以支持三种指令集。不同体系结构生成的代码质量有一些差别:
amd64 (a.k.a. x86-64); 6g,6l,6c,6a
最成熟的实现,编译器在寄存器级别优化,可以生成高质量的目标代码(有时候gccgo可能更优)。
386 (a.k.a. x86 or x86-32); 8g,8l,8c,8a
amd64平台的的完整移植。
arm (a.k.a. ARM); 5g,5l,5c,5a
有疑问加站长微信联系(非本文作者)