常见环境变量
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