ab520025520025 发表于 2018-9-21 08:44:18

初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录

  我们接下来一个一个来看关于Go语言中的三个目录的详细解释
  先通过go env查看go的环境变量(我这里是mac的环境,所以可能和你的不同)
  

localhost:~ zhaofan$ go env  
GOARCH
="amd64"  
GOBIN
=""  
GOEXE
=""  
GOHOSTARCH
="amd64"  
GOHOSTOS
="darwin"  
GOOS
="darwin"  
GOPATH
="/Users/zhaofan/go_project"  
GORACE
=""  
GOROOT
="/usr/local/Cellar/go/1.9.2/libexec"  
GOTOOLDIR
="/usr/local/Cellar/go/1.9.2/libexec/pkg/tool/darwin_amd64"  
GCCGO
="gccgo"  
CC
="clang"  
GOGCCFLAGS
="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/b6/mc1c40c91cld67ps963_r16h0000gn/T/go-build539393745=/tmp/go-build -gno-record-gcc-switches -fno-common"  
CXX
="clang++"  
CGO_ENABLED
="1"  
CGO_CFLAGS
="-g -O2"  
CGO_CPPFLAGS
=""  
CGO_CXXFLAGS
="-g -O2"  
CGO_FFLAGS
="-g -O2"  
CGO_LDFLAGS
="-g -O2"  
PKG_CONFIG
="pkg-config"  
localhost:
~ zhaofan$  


GOROOT
  其实就是golang 的安装路径
  当你安装好golang之后其实这个就已经有了

GOPATH
  go命令依赖的一个重要环境变量:$GOPATH
  其实可以把这个目录理解为工作目录,我个人定义的目录是:
  GOPATH="/Users/zhaofan/go_project"
  当然这个目录是需要添加到环境变量中的
  go_project // (go_project为GOPATH目录)
  -- bin // golang编译可执行文件存放路径
  -- pkg // golang编译包时,生成的.a文件存放路径
  -- src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。

GOBIN
  首先先看一下我的目录结构:

  我们通常是在go_project目录下执行go build,例如:
  /Users/zhaofan/go_project/src/go_dev/01/hello/hello.go
  我们现在要编译hello.go文件,我只需要切换到
  /Users/zhaofan/go_project目录中,然后执行:
  go build go_dev/01/hello
  golang 会自动去src下找hello目录,因为我的hello.go中代码的开通导入了packag main包,所以可以编译成可执行文件,但是这样默认在当前目录下生成可执行文件,虽然可以指定目录,但是还是感觉不是非常方便
  所以还有两个非常好用的命令:go get 和go install

go get
  go get会做两件事:
  1. 从远程下载需要用到的包
  2. 执行go install

go install
  go install 会生成可执行文件直接放到bin目录下,当然这是有前提的
  你编译的是可执行文件,如果是一个普通的包,会被编译生成到pkg目录下该文件是.a结尾

关于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
  



页: [1]
查看完整版本: 初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录