GO常用命令总结

一、项目初始化与模块管理

  1. go mod init

    • 作用:初始化新的 Go 模块(生成 go.mod 文件)
    • 示例:
      go mod init github.com/yourname/project
      
    • 关键点:
      • 必须在项目根目录执行
      • 模块路径通常为代码仓库地址
  2. go mod tidy
    go mod tidy 命令会根据项目代码中实际的导入情况,对 go.modgo.sum 文件进行更新和整理,确保项目依赖的正确性和完整性。它主要完成两个核心任务:

  3. 添加缺失的依赖

    • 检查项目代码中引入的包
    • 如果这些包在 go.mod 文件中不存在对应的依赖项,会自动将这些依赖添加到 go.mod 文件中
    • 下载对应的模块版本到本地缓存
  4. 移除不再使用的依赖

    • 扫描 go.mod 文件中的依赖项
    • 若发现某些依赖在项目代码中没有被引用,会将这些无用的依赖从 go.mod 文件中移除
    • 清理本地缓存中对应的模块文件
  • 工作原理解析
  1. 解析导入路径

    • 遍历项目中的所有 .go 文件
    • 解析其中的 import 语句,确定项目实际使用的包
  2. 对比依赖信息

    • 将解析得到的包信息与 go.mod 文件中的依赖列表进行对比
    • 找出缺失和多余的依赖项
  3. 更新 go.mod 文件

    • 添加缺失的依赖项
    • 移除不再使用的依赖项
    • 更新依赖的版本信息
  4. 更新 go.sum 文件

    • go.sum 文件用于记录项目依赖的哈希值,确保依赖的完整性和安全性
    • 更新 go.sum 文件,使其与 go.mod 文件中的依赖信息保持一致
  5. 下载和清理模块

    • 根据更新后的 go.mod 文件,下载缺失的模块到本地缓存
    • 清理不再使用的模块
  • 使用场景
    | 场景 | 说明 |
    |------|------|
    | 项目初始化 | 开始新项目时快速初始化依赖关系,确保所有必要依赖被正确添加 |
    | 代码修改 | 添加/删除导入语句后运行,及时更新依赖信息,避免编译错误 |
    | 版本升级 | 手动修改 go.mod 文件中的版本信息后运行,下载并更新到指定版本 |
    | 依赖清理 | 清理不再使用的依赖,减小项目依赖体积 |
  1. go get
    • 作用:下载/更新依赖包
    • 常用参数:
      go get github.com/pkg/errors@latest  # 获取最新版本
      go get github.com/gin-gonic/gin@v1.9.0  # 指定版本
      go get -u ./...  # 更新所有依赖
      

二、代码构建与运行

  1. go build

    • 作用:编译生成可执行文件
    • 示例:
      go build -o bin/app cmd/main.go  # 指定输出路径
      go build -tags=jsoniter .  # 使用编译标签
      
    • 注意:
      • 默认输出到当前目录
      • 跨平台编译需加 GOOSGOARCH 环境变量
  2. go run

    • 作用:直接编译并运行
    • 适用场景:快速测试
    • 示例:
      go run main.go --port=8080
      
  3. go install

    • 作用:编译并将结果安装到 $GOPATH/bin
    • 典型用途:安装全局工具
    • 示例:
      go install golang.org/x/tools/cmd/goimports@latest
      

三、测试与性能分析

  1. go test

    • 作用:运行单元测试
    • 常用参数:
      go test ./...  # 递归测试所有包
      go test -v -run TestAdd  # 运行特定测试函数
      go test -coverprofile=coverage.out  # 生成覆盖率报告
      
    • 覆盖率可视化:
      go tool cover -html=coverage.out
      
  2. go benchmark

    • 作用:性能基准测试
    • 示例:
      go test -bench=. -benchmem
      
    • 输出解读:
      • ns/op:每次操作纳秒数
      • B/op:每次操作内存分配
      • allocs/op:每次操作分配次数
  3. go tool pprof

    • 作用:性能分析
    • 使用流程:
      go test -cpuprofile=cpu.prof -memprofile=mem.prof
      go tool pprof cpu.prof
      

四、代码质量工具

  1. go fmt

    • 作用:格式化代码(自动对齐、缩进)
    • 推荐用法:
      go fmt ./...
      
  2. go vet

    • 作用:静态代码检查(常见错误检测)
    • 示例:
      go vet ./...
      
    • 典型检测项:
      • fmt.Printf 参数不匹配
      • 锁拷贝问题
  3. golangci-lint(需单独安装)

    • 作用:聚合多种 linter
    • 推荐命令:
      golangci-lint run --fix
      

五、依赖与文档

  1. go list

    • 作用:查看模块/包信息
    • 实用示例:
      go list -m all  # 查看所有依赖
      go list -json ./...  # JSON格式输出
      
  2. go doc

    • 作用:查看文档
    • 示例:
      go doc fmt.Printf
      go doc -http=:6060  # 启动本地文档服务器
      
  3. go clean

    • 作用:清理构建缓存
    • 常用:
      go clean -cache  # 清理构建缓存
      go clean -testcache  # 清理测试缓存
      

六、跨平台编译

# Linux 64位
GOOS=linux GOARCH=amd64 go build -o app-linux

# Windows
GOOS=windows GOARCH=amd64 go build -o app.exe

# Mac ARM
GOOS=darwin GOARCH=arm64 go build -o app-mac

注意:交叉编译需安装对应平台的工具链


七、环境管理

  1. 查看环境变量

    go env
    go env GOPATH  # 查看特定变量
    
  2. 修改环境变量

    go env -w GO111MODULE=on
    

八、特殊工具链

  1. go generate

    • 作用:执行代码生成指令
    • 典型用途:
      • 生成 protobuf 代码
      • 自动化模板代码
  2. go tool 子命令

    • go tool compile:底层编译器
    • go tool nm:查看符号表
    • go tool objdump:反汇编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值