GO语言学习—基础概念

1.1 go语言三种环境变量

  • GOROOT:Go 语言安装根目录的路径,也就是 GO 语言的安装路径。

  • GOPATH:若干工作区目录的路径。是我们自己定义的工作空间。

  GOPATH 是 Go 语言的工作目录,它的值是一个目录的路径,也可以是多个目录路径,每个目录都代表 Go 语言的一个工作区。利于这些工作区,去放置 Go 语言的源码文件,以及安装后的归档文件和可执行文件

  • GOBIN:GO 程序生成的可执行文件的路径。

1.2 Go 语言源码的组织方式

  Go 语言的源码是以代码包为基本组织单位的。在文件系统中,这些代码包其实是与目录一一对应的。由于目录可以有子目录,所以代码包也可以有子包。一个代码包中可以包含任意个以.go 为扩展名的源码文件,这些源码文件都需要被声明属于同一个代码包。代码包的名称一般会与源码文件所在的目录同名。如果不同名,那么在构建、安装的过程中会以代码包名称为准。

  每个代码包都会有导入路径,在工作区中,一个代码包的导入路径实际上就是从 src 子目录,到该包的实际存储位置的相对路径。代码包的导入路径是其他代码在使用该包中的程序实体时,需要引入的路径。具体的方式就是import该代码包的导入路径。

Go 语言源码的组织方式就是以环境变量 GOPATH、工作区、src 目录和代码包为主线的。一般情况下,Go 语言的源码文件都需要被存放在环境变量 GOPATH 包含的某个工作区(目录)中的 src 目录下的某个代码包(目录)中。

1.3 源码安装后的结果

  源码文件通常会被放在某个工作区的 src 子目录下。在安装后如果产生了归档文件(以“.a”为扩展名的文件),就会放进该工作区的 pkg 子目录;如果产生了可执行文件,就可能会放进该工作区的 bin 子目录。安装某个代码包而产生的归档文件是与这个代码包同名的。放置它的相对目录就是该代码包的导入路径的直接父级。

  归档文件的相对目录与 pkg 目录之间还有一级目录,叫做平台相关目录。平台相关目录的名称是由 build的目标操作系统、下划线和目标计算架构的代号组成的。

img

1.4 构建和安装 Go 程序的过程

  构建使用命令go build,安装使用命令go install。构建和安装代码包的时候都会执行编译、打包等操作,这些操作生成的任何文件都会先被保存到某个临时的目录中。如果构建的是库源码文件,那么操作后产生的结果文件只会存在于临时目录中。这里的构建的主要意义在于检查和验证。如果构建的是命令源码文件,那么操作的结果文件会被搬运到源码文件所在的目录中。安装操作会先执行构建,然后还会进行链接操作,并且把结果文件搬运到指定目录。进一步说,如果安装的是库源码文件,那么结果文件会被搬运到它所在工作区的 pkg 目录下的某个子目录中。如果安装的是命令源码文件,那么结果文件会被搬运到它所在工作区的 bin 目录中,或者环境变量GOBIN指向的目录中。

1.5 命令补充

  • 运行go build命令时加入标记-x,这样可以看到go build命令具体都执行了哪些操作。另外也可以加入标记-n,这样可以只查看具体操作而不执行它们。
  • 运行go build命令时加入标记-v,这样可以看到go build命令编译的代码包的名称。它在与-a标记搭配使用时很有用。
    go get会自动从一些主流公用代码仓库(比如 GitHub)下载目标代码包,并把它们安装到环境变量GOPATH包含的第 1 工作区的相应目录中。如果存在环境变量GOBIN,那么仅包含命令源码文件的代码包会被安装到GOBIN指向的那个目录。
  • -u:下载并安装代码包,不论工作区中是否已存在它们。
  • -d:只下载代码包,不安装代码包。
  • -fix:在下载代码包后先运行一个用于根据当前 Go 语言版本修正代码的工具,然后再安装代码包。
  • -t:同时下载测试所需的代码包。
  • -insecure:允许通过非安全的网络协议下载和安装代码包。HTTP 就是这样的协议。
    本文内容来自Go语言核心36讲

猜你喜欢

转载自blog.csdn.net/qq_42979842/article/details/114373683