资源网址:Downloads - The Go Programming Language
go环境部署
一、下载安装包
wget https://golang.google.cn/dl/go1.11.linux-amd64.tar.gz
二、解压安装
注:go安装包是已经编译,直接将解压后的包放置在/usr/local/下
# tar zxvf go1.11.linux-amd64.tar.gz -C /usr/local
三、配置go环境变量
# vim /etc/profile
export GOROOT=/usr/local/go
export GOPATH=/root/gocode
export GOBIN=$GOROOT/bin
export PATH=$PATH:"/root/terraform":$GOBIN
# source /etc/profile
四、检测go版本
# go version
go version go1.11 linux/amd64
五、检测go环境
# go env
GOARCH="amd64"
GOBIN="/usr/local/go/bin"
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/go_code"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build843021042=/tmp/go-build -gno-record-gcc-switches"
六、配置go项目目录结构
# go code目录:/home/go_code
# 源码存放路径:/home/go_code/src
# 二进制文件存放路径:/home/go_code/bin
# 依赖包存放路径:/home/go_code/pkg
# mkdir -p /home/go_code
# cd /home/go_code
# mkdir {bin,pkg,src}
七、测试程序
# cat test.go
package main
import (
"fmt"
)
func main() {
fmt.Printf("hello world")
}
# go run test.go
hello world
go项目目录说明
GOROOT
golang 的安装路径,当安装好golang之后会自动创建
GOPATH
GOPATH是作为编译后二进制的存放目的地和import包时的搜索路径
$GOPATH目录约定有三个子目录
- src 存放源代码
- pkg 存放编译好的库文件
- bin 编译后生成的可执行文件
常用
- 存放sdk以外的第三方类库
- 自己收藏的可复用的代码
- go install/go get和go的工具等会用到GOPATH环境变量.
基于GOPATH代码目录结构规划
GOPATH下的src目录就是接下来开发程序的主要目录,所有的源码都是放在这个目录下面,那么一般我们的做法就是一个目录一个项目,
例如: $GOPATH/src/mymath 表示mymath这个应用包或者可执行应用,这个根据package是main还是其他来决定,main一般是可执行应用,其他的一般就是应用包。作者:半兽人链接:https://www.orchome.com/9605来源:OrcHome著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
GOBIN
程序生成的可执行文件的路径。这里注意,可以设置它,也可以不设置,默认是个空字符串,我猜测它会链接距离最短的$GOPATH下的./bin文件夹。这里多说一句,需要go install才会放到到GOBIN目录,go build的话可执行文件和main.go在同一目录下。
go项目开发目录结构
go_project // go_project为GOPATH目录
-- bin
-- myApp1 // 编译生成
-- myApp2 // 编译生成
-- myApp3 // 编译生成
-- pkg
-- src
-- myApp1 // project1
-- models
-- controllers
-- others
-- main.go
-- myApp2 // project2
-- models
-- controllers
-- others
-- main.go
-- myApp3 // project3
-- models
-- controllers
-- others
-- main.go