GO 常见环境变量与常用命令

常见环境变量

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

表示目标机器的处理器架构,它的值可以是 386amd64 或 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 build命令时在当前目录下生成的与包名或者 Go 源码文件同名的可执行文件。在 Windows 下,则是与包名或者 Go 源码文件同名且带有“.exe”后缀的文件。
  • 执行go test命令并加入-c标记时在当前目录下生成的以包名加“.test”后缀为名的文件。在 Windows 下,则是以包名加“.test.exe”后缀的文件。
  • 执行go install命令安装当前代码包时产生的结果文件。如果当前代码包中只包含库源码文件,则结果文件指的就是在工作区 pkg 目录下相应的归档文件。如果当前代码包中只包含一个命令源码文件,则结果文件指的就是在工作区 bin 目录下的可执行文件。
  • 在编译 Go 或 C 源码文件时遗留在相应目录中的文件或目录 。包括:“_obj”和“_test”目录,名称为“_testmain.go”、“test.out”、“build.out”或“a.out”的文件,名称以“.5”、“.6”、“.8”、“.a”、“.o”或“.so”为后缀的文件。这些目录和文件是在执行go build命令时生成在临时目录中的。

相关参数

  • -i 清除关联的安装的包和可运行文件,也就是通过go install安装的文件;
  • -n 把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的;
  • -r 循环的清除在 import 中引入的包;
  • -x 打印出来执行的详细命令,其实就是 -n 打印的执行版本;
  • -cache 删除所有go build命令的缓存
  • -testcache 删除当前包所有的测试结果

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

Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码

go test 命令,会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件,性能测试系统可以给出代码的性能数据,帮助测试者分析性能问题

要开始一个单元测试,需要准备一个 go 源码文件,在命名文件时需要让文件必须以_test结尾。默认的情况下,go test命令不需要任何的参数,它会自动把你源码包下面所有 test 文件测试完毕,当然你也可以带上参数。

这里介绍几个常用的参数:

  • -bench regexp 执行相应的 benchmarks,例如 -bench=.;
  • -cover 开启测试覆盖率;
  • -run regexp 只运行 regexp 匹配的函数,例如 -run=Array 那么就执行包含有 Array 开头的函数;
  • -v 显示测试的详细命令

单元测试源码文件可以由多个测试用例组成,每个测试用例函数需要以Test为前缀,例如:

func TestXXX( t *testing.T )

  • 测试用例文件不会参与正常源码编译,不会被包含到可执行文件中。
  • 测试用例文件使用go test指令来执行,没有也不需要 main() 作为函数入口。所有在以_test结尾的源码内以Test开头的函数会自动被执行。
  • 测试用例可以不传入 *testing.T 参数。

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言中,可以通过设置系统环境变量来配置Go语言的环境。首先,找到"我的电脑",打开"属性"。接下来,选择"高级系统设置",然后选择"高级"标签。点击"环境变量"按钮,并新建系统变量。设置变量名为"GOROOT",变量值为"C:\Go\"。最后,修改系统变量Path,将Go语言的bin目录路径添加到Path中。这样就完成了Go语言环境变量的设置。 对于获取系统环境变量的方法,可以使用Go语言中的Getenv方法来操作环境变量。可以参考中的实例分析来学习如何使用Getenv方法获取系统环境变量。此外,也可以通过操作系统的环境变量设置界面来设置环境变量,这样设置的环境变量对整个系统都有效。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [go语言环境变量如何设置](https://blog.csdn.net/qq_59527682/article/details/126462366)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [GO语言获取系统环境变量的方法](https://download.csdn.net/download/weixin_38587473/12878873)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [go 如何设置环境变量](https://blog.csdn.net/weixin_35748962/article/details/129071874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值