精选文章 【Golang】Go的GOROOT,GOPATH,GOBIN和工程project目录结构

【Golang】Go的GOROOT,GOPATH,GOBIN和工程project目录结构

作者:bandaoyu 时间: 2020-08-05 10:28:28
bandaoyu 2020-08-05 10:28:28

使用go env 命令,可以打印出Go的配置

GOROOT

其实就是golang 的安装路径
当你安装好golang之后其实这个就已经有了

GOPATH

go命令依赖的一个重要环境变量:$GOPATH

其实可以把这个目录理解为工作目录,我个人定义的目录是:
GOPATH="/Users/zhaofan/go_project"
当然这个目录是需要添加到环境变量中的

vim /etc/profile

(根据实际路径修改下面的语句)添加在/etc/profile 之后

export GOROOT=/goland/go
export GOPATH=/goland/workspace

go_project // (go_project为GOPATH目录)
-- bin // golang编译可执行文件存放路径
-- pkg // golang编译包时,生成的.a文件存放路径
-- src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。

GOBIN

在*.go 所在目录执行go install后生产的可执行文件存放的路径

 

 

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

【Golang】Go的GOROOT,GOPATH,GOBIN和工程project目录结构1

我们通常是在go_project目录下执行go build,例如:

go文件路径是:
/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 

 

go命令依赖一个重要的环境变量:$GOPATH

GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号;

当有多个GOPATH时默认将go get获取的包存放在第一个目录下

$GOPATH目录约定有三个子目录

src存放源代码(比如:.go .c .h .s等)   按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。

pkg编译时生成的中间文件(比如:.a)  golang编译包时

bin编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)

代码目录结构规划

GOPATH下的src目录就是接下来开发程序的主要目录,所有的源码都是放在这个目录下面,那么一般我们的做法就是一个目录一个项目,

例如: $GOPATH/src/mymath 表示mymath这个应用包或者可执行应用,这个根据package是main还是其他来决定,main的话就是可执行应用,其他的话就是应用包,这个会在后续详细介绍package。


链接:https://www.jianshu.com/p/eea2dac12bce
 

govendor 管理包

 

安装govendor  (略)

进入src的项目目录中,入,执行初始化 govendor init ,生成vendor目录

下载包,在myApp1中,也就是(vendor的父目录),执行govendor fetch 包地址(如govendor fetch github.com/ClickHouse/clickhouse-go)

 

 

 

简单的解决GOROOT和GOPATH的方法

https://github.com/newtorn/newgo

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:使用Juicebox创建平面设计的相册

下一篇:202006-3 CCF CSP认证 Markdown渲染器 (可查看渲染后文本-详解大模拟)

您可能感兴趣

  • Linux的企业-Codis 3集群搭建详解

    Codis 3集群搭建详解 Codis 3介绍 对于Redis集群方案有好多种,基本常用的就是twemproxy,codis、redis cluster这三种解决方案,本人有幸工作中都大量使用过,各有利有弊,下面这篇文章详解讲解一下豌豆尖的Codis 3。由于业务中还使用有Codis 2,所以对于Codis 2也写了一篇文章Codis 2集群搭建。Codis总体来说还算不错,仅供大家学习和参...

  • gopath基础概念

    GOROOT golang安装路径。 GOPATH 官方解释,请google。go工作环境中常常用到的一个很重要的环境变量(这种设计类似java)。具体用途:go命令常常需要用到的,如go run,go install, go get等。允许设置多个路径,和各个系统环境多路径设置一样,windows用“;”,linux(mac)用“:”分隔。 在linux(Mac)下,为了方便,一般配置在~...

  • Go语言之Doc 文档

    对于协作开发或者代码共享来说,文档是一个可以帮助开发者快速了解以及使用这些代码的一个教程,文档越全面、越详细,入门越快,效率也会更高。 在Go语言中,Go为我们提供了快速生成文档以及查看文档的工具,让我们可以很容易地编写查看文档。 Go提供了两种查看文档的方式:一种是使用go doc命令在终端查看。这种适用于使用VIM等工具在终端开发的人员,他们不用离开终端,既可以查看想查看的文档,又可以编...

  • go语言笔记——go环境变量goroot是安装了路径和gopath是三方包路径

    Go 环境变量 Go 开发环境依赖于一些操作系统环境变量,你最好在安装 Go 之间就已经设置好他们。如果你使用的是 Windows 的话,你完全不用进行手动设置,Go 将被默认安装在目录 c:/go 下。这里列举几个最为重要的环境变量: $GOROOT 表示 Go 在你的电脑上的安装位置,它的值一般都是 $HOME/go,当然,你也可以安装在别的地方。 $GOARCH 表示目标机器的处理器架...

  • Go语言开发环境IntelliJ IDEA,可惜没有remote debug

    2019独角兽企业重金招聘Python工程师标准>>> 开发系统: Mac OS X 10.11.5 EI Capitan 开发工具: 代码编写: IntelliJ IDEA (实际用了WebStorm。搞不好Android Studio都行)。 编译测试运行调试: Docker Toolbox (Docker的真正的编译和测试环境是在一个特权容器里做的,好的。) 基本想法就是:在集成开发环...

  • IntelliJ Idea 14 安装 Golang 插件 google-go-lang-idea-

    2019独角兽企业重金招聘Python工程师标准>>> IntelliJ Idea 14 安装 Golang 插件 google-go-lang-idea-plugin 的方法 2015-03-08 16:51 zsjangel 阅读 4249 次 0 人喜欢 1 条评论 收藏 IDEA 的编辑器都很强悍,所以现在学Go 也想用他啊,无奈这个插件搞了好久,整理了下流程记录下 1. 当然是下载...

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。