初学者没有搞明白的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 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏liulun

在CentOS上搭建PHP服务器环境

 您也可以使用一键自动部署环境的工具,请参见网友开发的这个工具 http://www.centos.bz/2013/08/ezhttp-tutorial/ ...

2476
来自专栏实战docker

制作mongodb的Docker镜像文件

在上一章《Docker下,极速体验mongodb》中,我们快速搭建了mongodb并在控制台做了基本的体验,当时用的镜像是官方发布在hub.docker.com...

2689
来自专栏Linyb极客之路

linux常用基本命令之权限处理命令

命令:chmod 语法:chmod [{ugo}{+-=}{rwx}] [文件或目录] chmod [mode=421] [文件目录] ...

3417
来自专栏吾爱乐享

linux相关的练习题

1032
来自专栏闵开慧

ubuntu中权限

Ubuntu下修改目录权限需要先用 sudo 来获得管理员权限,格式如下: sudo chmod 600 ××× (只有所有者有读和写的权限) sudo c...

2717
来自专栏Hongten

python开发_tempfile

 如果你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么tempfile模块来创建临时文件(夹)是个不错的选择

672
来自专栏贺贺的前端工程师之路

Mac 常用命令Mac 常用命令

943
来自专栏电光石火

linux安装mysql

Linux服务器yum安装(CentOS6 64位) 所有在服务器上执行的命令,都在 # 后面 1、命令安装mysql # yum install mysql ...

24011
来自专栏漫漫全栈路

Ngrok编译Windows下客户端和相关配置

上一篇文章实现了Ngrok在Ubuntu服务端和Ubuntu的内网穿透代理到外网,那么基于现有的ubuntu服务端,如何让运行在win下的web服务或其他服务...

3833
来自专栏西安-晁州

jenkins学习之自动打包构建nodejs应用

上一节记录了下jenkins在centos下的安装,这节继续,说下怎么使用jenkins和nodejs进行自动打包更新服务。 创建任务 创建任务比较简单,这里我...

2350

扫码关注云+社区