zl程序教程

您现在的位置是:首页 >  其他

当前栏目

初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录详解编程语言

编程语言 详解 目录 没有 初学者 project 明白 GOPATH
2023-06-13 09:20:37 时间

我们接下来一个一个来看关于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

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

初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录详解编程语言

我们通常是在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 

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/12402.html

cgojavamac