初学者没有搞明白的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 
时间: 2024-11-02 10:56:52

初学者没有搞明白的GOROOT,GOPATH,GOBIN,project目录的相关文章

GOROOT、GOPATH和project目录说明

go env环境查看 用go env 可查看当前go环境变量. $ go env GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/mac/MyCodeBase/Go-project/master" GORACE=&quo

容器公司拿到5千万A+轮,搞明白了传统企业生意经

(上图为数人云创始人及CEO王璞) 2016年11月,中国开源云容器工作组发布了<容器技术及其应用白皮书 V1.0>.<白皮书>指出,继虚拟化技术出现后,容器技术逐渐成为对云计算领域具有深远影响的变革技术.容器技术的发展和应用,为各行业应用云计算提供了新思路,同时容器技术也将对云计算的交付方式.效率.PaaS平台的构建等方面产生深远影响. 容器技术从2014年开始风靡全球,美国以 2013年Docker公司成立为标志.中国以2014年底的一批Docker容器公司为标志,出现了一波D

一小时搞明白注解处理器(Annotation Processor Tool)

Java中的注解是个很神奇的东西,还不了解的可以看下一小时搞明白自定义注解(Annotation).现在很多Android的库都用使用注解实现的,比如ButterKnife,我们不防也来学习一下,学完注解处理器,我们尝试写一个简单的类似ButterKnife的东西来绑定控件. 什么是注解处理器? 注解处理器是(Annotation Processor)是javac的一个工具,用来在编译时扫描和编译和处理注解(Annotation).你可以自己定义注解和注解处理器去搞一些事情.一个注解处理器它以J

poj3687 拓扑排序 还没怎么搞明白 回头再想想

[题意]:n个重量为1~n的球,给定一些球之间的重量比较关系(如 2 1  表示第二个球比第一个球轻),求每个球可能的重量,ans[i] 表示第i个球的重量,要求输出的是ans字典序最小的情况. [思路]:对于给出的a b  建反边,每次 在出度为0的所有点里选一个序号最小的赋值(从n开始 由大到小赋). 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<string>

LIN、CAN、FlexRay、MOST,三分钟搞明白四大汽车总线

LIN.CAN.FlexRay.MOST,三分钟搞明白四大汽车总线 2016-09-21 13:09 汽车中的电子部件越来越多,光是ECU就有几十个,这么多的电子单元都要进行信息交互.传统的点对点通信已经不能满足需求,因此必须要采用先进的总线技术. 车用总线就是车载网络中底层的车用设备或车用仪表互联的通信网络.目前,有四种主流的车用总线:CAN总线.LIN总线.FlexRay总线和MOST总线. 用一张表格来说明各种总线的区别 LIN总线 LIN(Local Interconnect Netwo

没搞明白fileinput模块的inplace!

__author__ = 'sophi' import fileinput product_list = [] f = open("porduct.txt","r",encoding="utf-8") #打开文件 for line in f.readlines(): line = line.strip() index,item = line.split(":") #冒号分割 product_list.append((index

Java程序员,如果你想要搞明白CDN,这篇应该够了!

程序员,如果想要搞明白CDN,这篇应该够了!最近在了解边缘计算,发现我们经常听说的CDN也是边缘计算里的一部分.那么说到CDN,好像只知道它中文叫做内容分发网络.那么具体CDN的原理是什么?能够为用户在浏览网站时带来什么好处呢?解决这两个问题是本文的目的. CDN概念CDN全称叫做"Content Delivery Network",中文叫内容分发网络. 实际上CDN这个概念是在1996年由美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的.那么它到底是怎么改善互联网服务质量

Go语言的GOPATH与工作目录详解

这篇文章主要介绍了Go语言的GOPATH与工作目录详解,本文详细讲解了GOPATH设置.应用目录结构.编译应用等内容,需要的朋友可以参考下 GOPATH设置 go 命令依赖一个重要的环境变量:$GOPATH1 (注:这个不是Go安装目录.下面以笔者的工作目录为说明,请替换自己机器上的工作目录.) 在类似 Unix 环境大概这样设置: 复制代码 代码如下: export GOPATH=/home/apple/mygo 为了方便,应该把新建以上文件夹,并且把以上一行加入到 .bashrc 或者 .z

搞明白这八个问题,Linux系统就好学多了

导读 正在犹豫入坑Linux学习的同学或者已经入坑的同学,经常会问到这样八个问题.今天,这些问题我都会一一解答,希望我的看法能帮助各位同学.常言道“好的开始是成功的一半”,如果你明白了以下八个问题,就能有一个很好的开始了,建立了正确的学习观,自然就成功了一半. 1.学Linux有什么用? 学好Linux会让你打破 Windows的限制,在开源世界里来去自如,有大把的免费软件供你使用,尤其是计算机系的学生,. 如果仅仅是将Linux作为就业谋生的唯一工具,选择方向主要是在运维.系统级软件开发等领域