Go语言核心36讲笔记1——工作区和GOPATH

Go语言核心36讲笔记系列是我学习《Go并发编程实战》作者郝林的专栏文章——Go语言核心36讲所做的笔记。

1、配置三个环境变量:

GOROOT:Go的安装目录

GOPATH:工作空间目录

GOBIN:

2、GOPATH

环境变量GOPATH的值可以是一个目录的路径,也可以包含多个目录路径,每个目录待变了GO语言的一个工作去(workspace)。

扩展知识:

(1)Go语言源码的组织方式

Go语言的源码以代码包为基本组织单位,

扫描二维码关注公众号,回复: 2707395 查看本文章

代码包的名称一般会与源码文件所在的文件的目录同名,如果不同名,在构建和安装的过程中会以代码包的名称为准。

在工作区中,一个代码包的导入路径实际上是从src子目录,到该包的实际存储位置的相对路径。

(2)源码安装后的结果

源码文件安装后产生的归档文件,会放进该工作区的pkg子目录。如果产生了可执行文件,,就会放进bin子目录。

归档文件的相对目录与pkg目录之间还有以及目录,叫平台相关目录。平台相关目录的名称是有build(也称“构建”)的目标操作系统、下划线和目标计算架构的代号组成。例如:构建某个代码包时的目标操作系统是Linux,目标计算架构是64位,那么对应的平台相关目录是linux_amd64。则代码包的归档文件就会放置到当前工作区的子目录:pkg/linux_amd64/github.com/labstack 中。

(3)构建和安装Go程序的过程

go build :构建命令

go install :安装命令

构建和安装都会执行编译、打包等操作。

构建:若构建的是库源码文件,那么操作可过值存在于临时目录中,这里构建的意义在于检查和验证。若构建的是命令源码文件,那么结果文件会搬运到那个源码文件所在的目录中。

安装:安装操作会先执行构建,若安装的是库源码文件,结果文件会搬运到pkg目录下的某个子目录。若安装是命令源码文件,则结果文件搬运到bin目录中,或者环境变量GOBIN指向的目录。

(4)go build 命令的一些可选项的用途和用法

go build命令,默认不会编译目标代码包所依赖的代码包。(当然如果依赖的代码包的归档文件不存在,或者源码文件有变化,还是会被编译)

执行命令时加入标记:

  • -a :会强制编译依赖的代码包。
  • -i :不但编译依赖的代码包,还要安装他们的归档文件
  • -x:可以看到go build 命令具体执行了那些操作
  • -n:值查看具体操作,而不执行他们
  • -v:看到go build命令编译的代码包的名称,与-a标记搭配一起使用很有用

go get 会自动从一些主流公用代码仓库下载目标代码包。并把他们安装到环境变量GOPATH包含的第一工作区相对应的目录中。如果存在环境变量GOBIN,那么近包含命令源码文件的代码包会被安装到GOBIN指向的目录。

常用几个标记:

  • -u:下载并安装代码包,不论工作区中是否已存在他们
  • -d:只下载代码包,不安装
  • -fix:在下载代码包后,先运行一个用于根据当前Go语言版本修正代码的工具,在安装代码包。
  • -t:同时下载测试所需的代码包
  • -insecure:允许通过非安全的网络协议下载和安装代码包。Http协议就是这样的协议。

概念解释:

归档文件:归档文件在linux下就是.a文件,也就是archive文件,是程序编译成功后生成的静态库文件。

思考题:

(1)Go语言在多个工作区中查找依赖包时是以怎样的顺序进行的?

答:GOPATH——>GOPATH从上到下的顺序。

(2)如果多个工作区中存在导入路径相同的代码包会产生冲突吗?

答:不会,因为查找代码包时是按题(1)中的顺序,在哪先找到就用哪个。

猜你喜欢

转载自blog.csdn.net/zuoyinlong5434/article/details/81568856