美文网首页
你真的了解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?

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