博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搞明白GOROOT,GOPATH,GOBIN,project目录
阅读量:4339 次
发布时间:2019-06-07

本文共 2096 字,大约阅读时间需要 6 分钟。

我们接下来一个一个来看关于Go语言中的三个目录的详细解释

先通过go env查看go的环境变量(我这里是mac的环境,所以可能和你的不同)

localhost:~ zhaofan$ go envGOARCH="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

 

所有的努力都值得期许,每一份梦想都应该灌溉!

转载于:https://www.cnblogs.com/qiaoyanlin/p/9602800.html

你可能感兴趣的文章
【GoLang】转载:我为什么放弃Go语言,哈哈
查看>>
【MySQL】MySQL 如何实现 唯一随机数ID
查看>>
【Redis】Redis分布式集群几点说道
查看>>
HDU2819(KB10-E 二分图最大匹配)
查看>>
mysql主从复制、redis基础、持久化和主从复制
查看>>
文档工具GitBook使用
查看>>
两个链表的第一个公共节点
查看>>
知道这20个正则表达式,能让你少写1,000行代码
查看>>
MariaDB 主从同步与热备(14)
查看>>
推荐的 CSS 书写顺序
查看>>
NIO:与 Buffer 一起使用 Channel
查看>>
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
查看>>
MFC接收ShellExecute多个参数
查看>>
volatile和synchronized的区别
查看>>
RocketMQ介绍与云服务器安装
查看>>
并发量计算研究
查看>>
sqlserver安装相关问题
查看>>
iOS学习系列 - 利用ASIHTTPRequest实现异步队列
查看>>
Oracle11g创建表空间、创建用户、角色授权、导入导出表以及中文字符乱码问题...
查看>>
我对 Window.Open 的认识
查看>>