实验环境
centos7.5
go1.11.5
安装
yum install -y go
环境变量
- GOROOT:Go安装目录;
- GOPATH:工作目录,其下包含src、pkg和 bin,分别用来存放源码文件、编译过程中的中间文件、编译后生成的可执行文件;
1,查看Go环境变量配置;
[root@ ~ ] # go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/lib/golang"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/golang/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 -fmessage-length=0 \
-fdebug-prefix-map=/tmp/go-build037505318=/tmp/go-build -gno-record-gcc-switches"
2,包搜索路径
Go在引用其他包时,搜索路径的先后顺序如下(只要搜索到,后面的不再搜索):
- 搜索当前目录下的vender目录;
- 搜索上一级目录下的vender目录,直到$GOPATH/src目录;
- 搜索$GOPATH/src目录;
- 搜索$GOROOT/src目录;
看一个编译时找不到包的具体问题,能明显的看出其包搜索顺序:
[root@VM /data/goroot/src/github.com/elastic/beats/heartbeat]# make
go build -i -ldflags "-X github.com/elastic/beats/libbeat/version.buildTime=......."
../libbeat/dashboards/importer.go:21:2: cannot find package "archive/zip" in any of:
/data/goroot/src/github.com/elastic/beats/vendor/archive/zip (vendor tree)
/data/goroot/src/archive/zip (from $GOROOT)
/root/go/src/archive/zip (from $GOPATH)
3,配置GOPATH
一般在实际使用开发项目时,我们一个会创建一个个人的Go项目路径来存放项目代码,把个人项目路径添加到GOPATH:
export GOPATH=$GOPATH:/data/goroot
上述命令只能保证回话中生效,为了永久保存,可以在/etc/profile文件修改。
helloworld 第一个Go程序
编写源码helloworld.go(常用的Go语言开发工具:Jetbrains goland):
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
编译helloworld:
[root@ ~ ] # go build helloworld.go
[root@ ~ ] # ls
helloworld helloworld.go
运行helloworld:
[root@ ~ ] # ./helloworld
Hello World!
常见的Go目录结构
WorkSpace // WorkSpace为GOPATH目录
-- bin
-- App1 // 编译生成
-- App2 // 编译生成
-- pkg
-- src
-- common 1
-- common 2
-- utils ...
-- App1 // project1
-- models
-- controllers
-- others
-- main.go
-- App2 // project2
-- models
-- controllers
-- others
-- main.go
如发现文中有错误,望留言指明,万分感激;
如对此文章内容感兴趣,想进一步探讨,可以留言交流;
如想转发此文章,请留言协商一下,切勿不指明出处的转发,尊重原创;
如阅读过程中有收获,并想感谢一下,欢迎打赏;
----小林帮