设为首页 收藏本站
查看: 1737|回复: 0

[经验分享] 初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录

[复制链接]

尚未签到

发表于 2018-9-21 08:44:18 | 显示全部楼层 |阅读模式
  我们接下来一个一个来看关于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
  首先先看一下我的目录结构:
DSC0000.png

  我们通常是在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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-599175-1-1.html 上篇帖子: 铁乐与猫梦境之森 下篇帖子: 【小技巧解决大问题】使用 frp 突破阿里云主机无弹性公网 IP 不能用作 Web 服务器的限制
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表