go 常用命令简介
安装学习参考:https://www.runoob.com/go/go-environment.html
PS E:\workForGo> go version go version go1.24.2 windows/amd64 PS E:\workForGo> go env set AR=ar set CC=gcc set CGO_CFLAGS=-O2 -g set CGO_CPPFLAGS= set CGO_CXXFLAGS=-O2 -g set CGO_ENABLED=1 set CGO_FFLAGS=-O2 -g set CGO_LDFLAGS=-O2 -g set CXX=g++ set GCCGO=gccgo set GO111MODULE= set GOAMD64=v1 set GOARCH=amd64 set GOAUTH=netrc set GOBIN= set GOCACHE=C:\Users\Administrator\AppData\Local\go-build set GOCACHEPROG= set GODEBUG= set GOENV=C:\Users\Administrator\AppData\Roaming\go\env set GOEXE=.exe set GOEXPERIMENT= set GOFIPS140=off set GOFLAGS= set GOGCCFLAGS=-m64 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build1998220205=/tmp/go-build -gno-record-gcc-switches set GOHOSTARCH=amd64 set GOHOSTOS=windows set GOINSECURE= set GOMOD=NUL set GOMODCACHE=C:\Users\Administrator\go\pkg\mod set GONOPROXY= set GONOSUMDB= set GOOS=windows set GOPATH=C:\Users\Administrator\go set GOPRIVATE= set GOPROXY=https://proxy.golang.org,direct set GOROOT=d:\Program Files\Go set GOSUMDB=sum.golang.org set GOTELEMETRY=local set GOTELEMETRYDIR=C:\Users\Administrator\AppData\Roaming\go\telemetry set GOTMPDIR= set GOTOOLCHAIN=auto set GOTOOLDIR=d:\Program Files\Go\pkg\tool\windows_amd64 set GOVCS= set GOVERSION=go1.24.2 set GOWORK= set PKG_CONFIG=pkg-config PS E:\workForGo>
主机VPN代理配置:
## Windows CMD set HTTP_PROXY=http://127.0.0.1:7890 set HTTPS_PROXY=http://127.0.0.1:7890 ## Windows PowerShell $env:HTTP_PROXY="http://127.0.0.1:7890" $env:HTTPS_PROXY="http://127.0.0.1:7890"
一、go test
ref: https://blog.csdn.net/qq_42938493/article/details/144200284
go test 是 Go 用来执行测试函数(test function)、基准函数(benchmark function)和示例函数(example function)的命令。
执行 go test 命令,它会在 *_test.go 文件中寻找 test、benchmark 和 example 函数来执行。帮助信息查看:go help testfunc
测试函数名必须以 TestXXX 开头。
基准函数名必须以 BenchmarkXXX 开头。
示例函数名必须以 ExampleXXX 开头。
// test 测试函数 func TestXXX(t *testing.T) { ... } // benchmark 基准函数 func BenchmarkXXX(b *testing.B) { ... } // examples 示例函数,其相关命名方式可以查看第一篇文章 func ExamplePrintln() { Println("The output of\nthis example.") // Output: The output of // this example. }
注意:名称以 _ 或 . 开头的文件即使后缀是 _test.go 将被忽略
二、go build、go run

go build [-o <指定的文件名+后缀名>] <源代码名称+后缀名>
go run <源代码名称+后缀名> // 编译运行,当前目录不生成exe文件
生成动态链接库,如下:
go build -o example.dll -buildmode=c-shared example.go
三、生成动态库 DLL
PS E:\workForGo> go env -w CXX=D:\msys64\mingw64\bin\g++.exe PS E:\workForGo> go env -w GOARCH=amd64
PS E:\workForGo> go env set CGO_ENABLED=1 set CC=D:\msys64\mingw64\bin\gcc.exe set CXX=D:\msys64\mingw64\bin\g++.exe set GOOS=windows set GOARCH=386 go build -buildmode=c-shared -o file.dll -tags stdc file.go
具体gcc/g++位置,可以查看
## Windows CMD C:\Users\Administrator> where gcc D:\msys64\mingw64\bin\gcc.exe ## Windows PowerShell PS C:\Users\Administrator> Get-Command gcc
四、go mod
# 使用 go modules 模式
PS E:\grule-rule-engine> go env -w GO111MODULE=on
# 开启代理,防止下载包失败
PS E:\grule-rule-engine> go env -w GOPROXY=https://goproxy.cn,direct
# 初始化项目
mkdir <项目名>
cd <项目名>
# 进入项目目录后输入
go mod init <项目名>
# 构建当前目录及其所有子目录下的所有Go包 PS E:\grule-rule-engine> go build ./...
# 3个点表示匹配所有字符串,这样go build就会编译./目录下的所有包。
Go mod 常用命令:
go mod init # 初始化go.mod
go mod tidy # 更新依赖文件: 添加丢失和删除未使用的模块
go mod download # 下载依赖文件
go mod vendor # 将依赖转移至本地的vendor文件
go mod edit # 手动修改依赖文件
go mod graph # 打印依赖图
go mod verify # 校验依赖
go mod help # go mod 帮助
五、Go 项目的 MAKE 工具
- 编译和构建:MAKE 工具可以根据指定的规则自动编译和构建 Go 项目,生成可执行文件或库文件。
- 测试和检查:MAKE 工具可以自动运行项目中的单元测试、性能测试和代码检查,以确保项目质量和可靠性。
- 安装和部署:MAKE 工具可以将编译好的程序或库文件自动安装到系统中,并实现自动部署。
- 清理和卸载:MAKE 工具可以清除编译过程中生成的临时文件,卸载已安装的程序或库文件。
5.1 MAKE 工具的使用方法
all: build test build: go build -o myapp main.go test: go test ./... clean: rm -f myapp
这个 Makefile 文件定义了三个目标:all、build 和 test,以及一个清理目标 clean。其中,all 目标依赖于 build 和 test 两个目标,意味着在执行 all 目标时,会先编译并构建项目,然后运行项目中的单元测试。
而 build 目标则只负责编译和构建项目,test 目标则只负责运行单元测试。要使用这个 Makefile 文件,只需要在命令行中输入 "make <target>" 命令即可执行对应的任务。
例如,要编译和构建项目,可以输入 "make build" 命令;要运行单元测试,可以输入 "make test" 命令;要执行所有任务,可以输入 "make all" 命令。
5.2 MAKE 工具高级用法
5.2.1 变量和参数:
APP_NAME=myapp all: build test build: go build -o $(APP_NAME) main.go test: go test ./... -v clean: rm -f $(APP_NAME)
5.2.2 条件语句和循环:
ifeq ($(OS), Windows_NT) EXTENSION=.exe else EXTENSION= endif
all: build test
build: go build -o myapp$(EXTENSION) main.go test: go test ./... -v clean: rm -f myapp$(EXTENSION)
5.2.3 函数和命令替换:
例如,可以定义一个函数来获取项目的版本号,并将其用于构建命令中。
VERSION=$(shell git describe --tags --abbrev=0) all: build test build: go build -o myapp -ldflags "-X main.version=$(VERSION)" main.go test: go test ./... -v clean: rm -f myapp
$(shell) 函数来调用 Git 命令来获取项目版本号,并将其存储在 VERSION 变量中。然后,在编译命令中使用 -ldflags 参数来将版本号传递给程序。5.2.4 并行执行:
.PHONY: all build test clean all: build test build: @echo "Building..." @go build -o myapp main.go test: @echo "Testing..." @go test ./... clean: @echo "Cleaning..." @rm -f myapp parallel: @echo "Parallel execution..." @make -j2 build test
在上述代码中,通过在 "make" 命令中添加 "-j2" 参数来指定并行执行数量为 2,从而同时执行 build 和 test 目标。
自动变量:如 $@ 表示规则中的目标,$< 表示第一个依赖文件,$^ 表示所有的依赖文件。
命令前面加了@字符,则不显示命令本身而只显示它的结果;
5.3 总结
通过编写 Makefile 文件,可以将所有必要的任务和依赖项组织起来,使得整个项目更加清晰和易于维护。
同时,MAKE 工具还支持许多高级功能和技巧,例如变量、参数、条件语句、循环、函数和命令替换等,可以进一步简化和优化构建过程。
浙公网安备 33010602011771号