wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar -C /usr/local -xvzf go1.8.3.linux-amd64.tar.gz上述步骤将go安装到/usr/local/go目录下面,也可以安装到其他任何位置。安装后需要设置环境变量。 @H_502_0@>export GOROOT=/usr/local/go:就是安装Go的主目录,go命令就来自于$GOROOT/bin/go。 @H_502_0@>export GOPATH=/home/niuliguo/workspace/goworkspace:可以把GOPATH看做是一个工作空间,这个是一个必须的变量,Go是通过GOPATH来解决依赖的,而且源文件也要组织放在$GOPATH/src目录下。 @H_502_0@>export PATH=$PATH:$GOPATH/bin:$GOROOT/bin,把二进制可执行文件添加到PATH变量中。 @H_502_0@以上三句话可以放到~/.bash: @H_502_0@
export GOROOT=/usr/local/go export GOPATH=/home/niuliguo/workspace/goworkspace export PATH=$PATH:$GOPATH/bin:$GOROOT/bin然后执行: @H_502_0@>source ~/.bashrc @H_502_0@
@H_502_0@二、Hello World @H_502_0@创建目录和文件: @H_502_0@
mkdir -p $GOPATH/src/hello cd $GOPATH/src/hello vim hello.gohello.go: @H_502_0@
package main import ( "fmt" ) func main() { fmt.Println("Hello world") }运行文件: @H_502_0@>go run hello.go @H_502_0@go run hello.go:将hello.go编译成二进制可执行程序,然后再运行。 @H_502_0@go build / ./hello:在当前目录下编译二进制文件 @H_502_0@go install:将可执行文件安装到$GOPATH/bin目录下
@H_502_0@三、依赖管理 @H_502_0@Go依赖管理的基本单位是 package ,简而言之,当你把所有 *.go 文件放到一个目录下时,它们就是同一个package。
@H_502_0@3.1 标准库package @H_502_0@标准库package是指Golang内置的package,例如 fmt,strings等,导入这些库比较简单,只需要import “$package_name" 即可,go编译器会在GOROOT中找到这些依赖的。需要注意的是Go 允许 sub package的, 例如 math/rand,crypto/rand 等, 在引入sub package时,sub package最后一部分作为package name,所以前面两个sub package的名字都是rand,当它们出现在同一个源文件中时就会出现冲突(这种情况是比较少见)。Go允许在import package时重命名package , 例如 import crand "crypto/rand" ,这时候 crypto/rand就便成 crand了,其作用类似于Python的 import ... as 语句。
@H_502_0@3.2 第三方package @H_502_0@
目前绝大多数第三方package都是通过github以源码的方式发布的,所以有两种方式可以安装第三方package
a.手动clone 源码到 $GOPATH/src 下,然后引用方法类似预自己写的package
b.Go 依赖管理支持自动clone,例如go getgithub.com/mitchellh/mapstructure
可以将repo自动clone下来并编译,然后在代码直接引用就可以了。需要注意的是这时候package 名字将变成这样import "github.com/mitchellh/mapstructure"
你也可以现在源码中声明 import语句,然后在运行 go get, 它会自动clone 所有的repo并编译安装。
四、Vim开发环境配置