美文网首页
你真的了解GOPATH?

你真的了解GOPATH?

作者: niyiwei | 来源:发表于2019-08-27 21:35 被阅读0次

在安装Go语言后,都应该配置 GOROOT,GOPATH,GOBIN这三个环境变量,

GOROOT:是Go的安装目录

GOPATH:设置工作区

GOBIN:执行go install后文件存放的位置

GOPATH:作为一个环境变量,它的值是一个到多个的目录的路径,每一个,目录都代表着Go语言的一个工作区,这些工作区中有三个文件夹

bin:安装main包生成的文件存放位置

pkg:安装不是main包的文件存放位置

src:存放源码文件,以及下载的包

扩展:

1. Go 语言源码的组织方式

Go 语言的源码是以代码包为基本组织单位的。在文件系统中,这些代码包其实是与目录一一对应的。目录可以有子目录,所以代码包也可以有子包。一个代码包中可以包含任意个以.go 为扩展名的源码文件,这些源码文件都需要被声明为属于同一个代码包。代码包的名称一般会与这些源码文件所在的目录同名。如果不同名,那么在构建、安装的过程中会以代码包名称为准。每个代码包都会有导入路径。代码包的导入路径是其他代码在使用该包中的程序实体时需要引入的路径。在实际使用程序实体之前,我们必须先导入其所在的代码包。具体的方式就是import。

在工作区中,一个代码包的导入路径实际上就是从 src 子目录,到该包的实际存储位置的相对路径。所以说,Go 语言源码的组织方式就是以环境变量 GOPATH、工作区、src 目录和代码包为主线的。一般情况下,Go 语言的源码文件都需要被存放在环境变量 GOPATH 包含的某个工作区(目录)中的 src 目录下的某个代码包(目录)中。除非设置了 GO111MODULE = on的环境变量。

GO111MODULE :是开启go module的功能,用于管理依赖

2.理解构建和安装 Go 程序的过程

构建使用命令go build

构建的是库源码文件,那么操作的结果文件只会存在于临时目录中。这里的构建的主要意义在于检查和验证。

构建的是命令源码文件,那么操作的结果文件会被搬运到那个源码文件所在的目录中。

安装使用命令go install

安装的是库源码文件,那么结果文件会被搬运到它所在工作区的 pkg 目录下的某个子目录中。

安装的是命令源码文件,那么结果文件会被搬运到它所在工作区的 bin 目录中,或者环境变量GOBIN指向的目录中。

共同点:构建和安装代码包的时候都会执行编译、打包等操作,并且这些操作生成的任何文件都会先被保存到某个临时的目录中。

3.go build 命令

-a强行对所有涉及到的代码包(包含标准库中的代码包)进行重新构建,即使它们已经是最新的了。

-n打印编译期间所用到的其它命令,但是并不真正执行它们。

-p n指定编译过程中执行各任务的并行数量

-race开启竞态条件的检测。

-v打印出那些被编译的代码包的名字。

-work打印出编译时生成的临时工作目录的路径,并在编译结束时保留它。在默认情况下,编译结束时会删除该目录。

-x打印编译期间所用到的其它命令。注意它与-n标记的区别。

4.go get命令

go get会自动从一些主流公用代码仓库下载目标代码包,并把它们安装到环境变量GOPATH包含的第 1 工作区的相应目录中。如果存在环境变量GOBIN,那么仅包含命令源码文件的代码包会被安装到GOBIN指向的那个目录。没有提供依赖管理的功能,建议使用官方包管理工具go module

标记:

-u:下载并安装代码包,不论工作区中是否已存在它们。

-d:只下载代码包,不安装代码包。

-fix:在下载代码包后先运行一个用于根据当前 Go 语言版本修正代码的工具,然后再安装

代码包。

-t:同时下载测试所需的代码包。

-insecure:允许通过非安全的网络协议下载和安装代码包。HTTP 就是这样的协议。

相关文章

  • 你真的了解GOPATH?

    在安装Go语言后,都应该配置 GOROOT,GOPATH,GOBIN这三个环境变量, GOROOT:是Go的安装目...

  • GO

    GOPATH go命令依赖于GOPATH,但是GOPATH跟JAVA_HOME不一样,GOPATH是一个工作目录,...

  • 告别GOPATH,快速使用 go mod(Golang包管理工具

    如果你还在使用 GOPATH 模式来开发Golang程序,那么你可以参考本文来告别 GOPATH,并带给你一个方便...

  • linux安装go和gobee

    1、安装go 下载go压缩包 解压到/usr/local目录 配置GOPATH和GOROOT,其中GOPATH是你...

  • GOPATH

    从 Go 1.8 版本开始,Go 开发包在安装完成后,将 GOPATH 赋予了一个默认的目录,参见下表 在Jetb...

  • go-GOPATH的问题

    一、GOPATH 1、GOPATH是用于指定你的workspace 的环境变量,它内部目录一般为: 2、1.8 版...

  • Ubuntu Golang 环境配置

    export GOPATH= export GOBIN=$GOPATH/bin export GOROOT=/us...

  • go语言基础

    设置 GOPATH 有什么意义? 工作区和 GOPATH 是go程序开发的核心概念。环境变量 GOPATH 的值可...

  • Golang初学者的踩坑之旅

    GOROOT与GOPATH 重点说一下这个GOPATH,可以设置为任意路径,例如我设置为GOPATH=C:\Use...

  • 十条有用的 GO 技术

    1. 使用单一的 GOPATH 多个 GOPATH 的情况并不具有弹性。GOPATH 本身就是高度自我完备的(通过...

网友评论

      本文标题:你真的了解GOPATH?

      本文链接:https://www.haomeiwen.com/subject/bxueectx.html