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 工具

在 Go 项目中,使用 MAKE 工具可以帮助开发人员完成以下工作:
  1. 编译和构建:MAKE 工具可以根据指定的规则自动编译和构建 Go 项目,生成可执行文件或库文件。
  2. 测试和检查:MAKE 工具可以自动运行项目中的单元测试、性能测试和代码检查,以确保项目质量和可靠性。
  3. 安装和部署:MAKE 工具可以将编译好的程序或库文件自动安装到系统中,并实现自动部署。
  4. 清理和卸载:MAKE 工具可以清除编译过程中生成的临时文件,卸载已安装的程序或库文件。

 

5.1 MAKE 工具的使用方法

 

使用 MAKE 工具需要创建一个名为 "Makefile" 的文本文件,其中包含了项目中所需的目标、依赖项和命令。
下面是一个简单的 Makefile 文件示例:
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 工具高级用法

 

除了基本的目标和依赖项之外,MAKE 工具还提供了许多高级功能和技巧,用于进一步优化和简化项目的构建和管理。以下是一些例子:

5.2.1 变量和参数:

使用变量和参数可以使得 Makefile 文件更加灵活和可配置。例如,可以设置一个变量来存储项目名称,然后在各个目标中引用该变量。
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 条件语句和循环:

MAKE 工具支持基本的条件语句和循环结构,可以根据不同的条件来执行不同的目标或命令。
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 函数和命令替换:

MAKE 工具允许在 Makefile 中使用自定义函数和命令替换,可以进一步简化和优化构建过程。
例如,可以定义一个函数来获取项目的版本号,并将其用于构建命令中。
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 并行执行:

MAKE 工具支持并行执行多个目标,可以加快构建速度和效率。
.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 总结

MAKE 工具是 Go 项目中常用的自动化构建工具,它可以帮助开发人员自动化管理项目中的任务和操作,从而提高开发效率和减少错误。
通过编写 Makefile 文件,可以将所有必要的任务和依赖项组织起来,使得整个项目更加清晰和易于维护。
同时,MAKE 工具还支持许多高级功能和技巧,例如变量、参数、条件语句、循环、函数和命令替换等,可以进一步简化和优化构建过程。
 
 

 

posted @ 2025-04-11 16:14  suntroop  阅读(44)  评论(0)    收藏  举报