常见环境变量

go 版本 1.18

通过go命令行工具得到以下环境变量


set GO111MODULE=auto  

开启或关门 go mod支持  有三个值 auto、on、off 默认是 auto,

  •  auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持
  •  off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包
  •  on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖

set GOARCH=amd64

表示目标机器的处理器架构,它的值可以是 386、amd64 或 arm


set GOBIN=

'go install'所在的目录将安装一个命令,用于存放编译好的可执行文件


set GOCACHE=C:\Users\Administrator\AppData\Local\go-build

这是go build产生的缓存,用于将来构建中重用的信息,这可以加快编译速度,可以使用"go clean -cache"命令清除编译缓存


set GOENV=C:\Users\Administrator\AppData\Roaming\go\env  

Go环境配置文件的位置。不能使用'go env -w'来设置。在环境中设置GOENV=off将禁用默认的配置文件


set GOEXE=.exe

可执行文件名后缀(如Windows上为“.exe”)


set GOINSECURE=

逗号分隔的glob模式列表(在Go的path.Match语法中)的模块路径前缀,应该总是在一个不安全的的方式。仅适用于直接获取的依赖项。GOINSECURE不禁用校验和数据库验证。GOPRIVATE或GONOSUMDB可以用来实现这一点。美好的用来编译代码的操作系统。例如linux, darwin, windows, netbsd


set GOMODCACHE=D:\workspace\go\pkg\mod

go命令存放下载模块的目录


set GONOSUMDB=

这个环境变量来设置不做校验的代码仓库, 它可以设置多个匹配路径,用逗号相隔

举例:

​GONOSUMDB=*.corp.example.com,rsc.io/private


set GOOS=windows

表示目标机器的操作系统,它的值可以是 darwin 、 freebsd 、 linux 或 windows


set GOPATH=D:\workspace\go

工作目录,也就是项目存储的目录,一般目录下包含 src 、 pkg 和 bin ,这三个目录分别用于存放源码文件、包文件和可执行文件,如果使用go mod 源码可以放到任意目录

set GOPRIVATE=

用来控制 go 命令把哪些仓库看做是私有的仓库,这样的话,就可以跳过 proxy server 和校验检查,这个变量的值支持用逗号分隔,可以填写多个值

举例

GOPRIVATE=*.corp.example.com,rsc.io/private

这样 go 命令会把所有包含这个后缀的软件包,包括 git.corp.example.com/xyzzy , rsc.io/private, 和 rsc.io/private/quux 都以私有仓库来对待


set GOPROXY=https://goproxy.io,direct

GOPROXY设置的是,go get 下载依赖时使用的代理地址列表。该环境变量也可以设置多个值,多个值之间使用逗号 或竖杠分隔。GOPROXY的默认值为:proxy.golang.org,direct

当用 go 命令查找依赖模块时,它会按顺序访问 GOPROXY 列表中的每个代理,直到收到成功的响应或出现终端错误

GOPROXY 中可能会存在两个关键字来代替代理URL

off:不允许从任何源下载依赖的模块
direct: 直接从版本控制存储库下载(如github),而不是使用模块代理
 


set GOROOT=C:\Program Files\Go

表示 Go 在你的电脑上的安装位置

set GOSUMDB=off

 可以用来配置你使用哪个校验服务器和公钥来做依赖包的校验,默认值是sum.golang.org

举例

GOSUMDB="gosum.io+ce6e7565+AY5qEHUk/qmHc5btzW45JVoENfazw8LielDsaI+lEbq6"

GOSUMDB=off则不做校验

Go 常用命令

go version

PS D:\workspace\demo01> go version

查看Go的版本

go build  编译源码

go build [-o 输出名] [-i] [编译标记] [包名]

go build 有很多种编译方法,如无参数编译、文件列表编译、指定包编译等,使用这些方法都可以输出可执行文件

  • 无参数编译  就是在当前目录下运行go build,go build 在编译开始时,会搜索当前目录的 go 源码进行编译。
  • 文件列表编译  就是可以指定多个文件进行编译,如go build file1.go file2.go ...多个文件用空格分隔
  • 指定包编译  就是在go build 后面跟包的路径,例如我的项目目录为demo01 目录下有个main.go文件 可以直接运行go build demo01 进行编译

编译时可以使用 -o 指定输出文件的名字

go clean

go clean go buildgo test-cgo installgo buildgo installgo build

go run

此命令会编译源码,并且直接执行源码的 main() 函数,不会在当前目录留下可执行文件

go fmt

gofmt 是一个 cli 程序,会优先读取标准输入,如果传入了文件路径的话,会格式化这个文件,如果传入一个目录,会格式化目录中所有 .go 文件,如果不传参数,会格式化当前目录下的所有 .go 文件

相关参数

-l仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出。而不是把改写后的全部内容都打印到标准输出。
-w把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。
-r添加形如“a[b:len(a)] -> a[b:]”的重写规则。如果我们需要自定义某些额外的格式化规则,就需要用到它。
-s简化文件中的代码。
-d只把改写前后内容的对比信息作为结果打印到标准输出。而不是把改写后的全部内容都打印到标准输出。
命令程序将使用 diff 命令对内容进行比对。在 Windows 操作系统下可能没有 diff 命令,需要另行安装。
-e打印所有的语法错误到标准输出。如果不使用此标记,则只会打印每行的第 1 个错误且只打印前 10 个错误。
-comments是否保留源码文件中的注释。在默认情况下,此标记会被隐式的使用,并且值为 true。
-tabwidth此标记用于设置代码中缩进所使用的空格数量,默认值为 8。要使此标记生效,需要使用“-tabs”标记并把值设置为 false。
-tabs是否使用 tab('\t')来代替空格表示缩进。在默认情况下,此标记会被隐式的使用,并且值为 true。
-cpuprofile

是否开启 CPU 使用情况记录,并将记录内容保存在此标记值所指的文件中。

 

go install

go install 会将编译的中间文件放在 $GOPATH 的 pkg 目录下,将编译结果放在 $GOPATH 的 bin 目录下,go install 命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或者 .a 包),第二步会把编译好的结果移到 $GOPATH/pkg 或者 $GOPATH/bin

go get 

go get 命令可以动态获取远程代码包,目前支持的有 BitBucket、GitHub、Google Code 和 Launchpad。在使用 go get 命令前,需要安装与远程包匹配的代码管理工具,如 Git、SVN、HG 等,参数中需要提供一个包名。
go get 命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行 go install。下载源码包的 go 工具会自动根据不同的域名调用不同的源码工具

相关参数

-d只下载不安装
-f只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
-fix在获取源码之后先运行 fix,然后再去做其他的事情
-t同时也下载需要为运行测试所需要的包
-u强制使用网络去更新包和它的依赖包
-v显示执行的命令

go test

_testgo testTestgo test_testTest