搞明白GOROOT,GOPATH,GOBIN,project目录

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

复制代码
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以后其实这个就已经有了post

GOPATH

go命令依赖的一个重要环境变量:$GOPATHui

其实能够把这个目录理解为工做目录,我我的定义的目录是:
GOPATH="/Users/zhaofan/go_project"
固然这个目录是须要添加到环境变量中的spa

go_project // (go_project为GOPATH目录)
-- bin // golang编译可执行文件存放路径
-- pkg // golang编译包时,生成的.a文件存放路径
-- src // 源码路径。按照golang默认约定,go run,go install等命令的当前工做路径(即在此路径下执行上述命令)。debug

GOBIN

首先先看一下个人目录结构:code

咱们一般是在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包,因此能够编译成可执行文件,可是这样默认在当前目录下生成可执行文件,虽然能够指定目录,可是仍是感受不是很是方便blog

因此还有两个很是好用的命令:go get 和go install开发

go get

go get会作两件事:
1. 从远程下载须要用到的包
2. 执行go installget

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 
复制代码

 

全部的努力都值得期许,每一份梦想都应该灌溉!
相关文章
相关标签/搜索