go run

编译并直接运行 Go 程序。它不会在当前目录下生成二进制文件,适合快速测试代码或运行脚本。

# 运行当前目录下的 main.go
go run main.go

# 运行包含多个文件的 main 包
go run .

go build

编译包和依赖项。如果是 main 包,它会生成一个可执行的二进制文件。

# 在当前目录生成名为 standard-name 的可执行文件(Windows下是 .exe)
go build

# 指定输出文件名为 myapp
go build -o myapp main.go

go install

编译并安装包。它会将生成的可执行文件移动到 $GOPATH/bin 目录下。

# 安装 gopls (Go 语言服务器)
go install golang.org/x/tools/gopls@latest

go mod

模块维护

# 初始化项目,生成 go.mod 文件
go mod init github.com/myuser/myproject

# 自动添加代码中引入但未记录的依赖,并删除记录了但未使用的依赖
go mod tidy

# 下载 go.mod 中记录的依赖到本地缓存
go mod download:

go get

  • 下载并添加依赖到当前模块,同时更新 go.mod 文件。

  • 常用场景: 引入第三方库(如 Web 框架 Gin, 数据库驱动 Gorm)。

  • 示例:

    Bash

    # 下载并添加 gin 框架
    go get github.com/gin-gonic/gin
        
    # 获取特定版本的依赖
    go get github.com/gin-gonic/gin@v1.7.0
    

3. 代码质量与测试 (Code Quality & Testing)

Go 语言非常强调代码规范和稳定性,因此自带了强大的工具链。

go fmt

  • 解释: 格式化源代码。Go 只有一种官方代码风格,这个命令会自动调整你的代码缩进、空格等,使其符合标准。

  • 注意: 大多数 IDE(VS Code, GoLand)会在保存文件时自动运行此命令。

  • 示例:

    Bash

    # 格式化当前项目下的所有文件
    go fmt ./...
    

go test

  • 解释: 自动读取源码目录下名为 *_test.go 的文件,编译并运行其中的测试函数。

  • 常用场景: 单元测试、基准测试(Benchmark)。

  • 示例:

    Bash

    # 运行当前目录的测试
    go test
        
    # 运行当前项目所有目录的测试,并显示详细信息(-v)
    go test -v ./...
        
    # 运行包含覆盖率分析的测试
    go test -cover
    

go vet

  • 解释: 静态代码分析工具。它会检测代码中可能出现的逻辑错误(编译器能通过,但运行时可能出错的问题,如 Printf 参数不匹配)。

  • 示例:

    Bash

    # 检查当前项目所有包的潜在错误
    go vet ./...
    

4. 环境与信息 (Environment & Info)

go env

  • 解释: 打印 Go 的环境信息。这对于排查路径问题、代理设置非常有用。

  • 常用变量: GOPROXY (代理), GOOS (目标操作系统), GOARCH (目标架构)。

  • 示例:

    Bash

    # 查看所有环境信息
    go env
        
    # 设置 Go 代理(国内加速下载常用)
    go env -w GOPROXY=https://goproxy.cn,direct
    

go list

  • 解释: 列出包或模块。

  • 示例:

    Bash

    # 列出当前项目依赖的所有模块
    go list -m all
    

###