核心开发命令 (每天都会用到)
-
go run
: 编译并直接运行- 作用:这是一个“懒人”命令。它会先将你的 Go 源代码编译成一个临时的可执行文件(放在一个临时目录里),然后立刻运行这个程序。程序结束后,这个临时文件会被自动删除。
- 通俗解释:就像你在 IDE 里点击“运行”按钮。它帮你省去了“先编译、再运行”这两个步骤,非常适合在开发和调试时快速查看代码效果。
- 示例:
go run main.go
-
go build
: 只编译,不运行- 作用:将 Go 源代码编译成一个可执行的二进制文件,并把它放在你当前所在的目录或指定的输出目录(使用
-o
参数)。它只做编译这一件事,不会运行程序。 - 通俗解释:就像工厂里的“生产”环节。你把原材料(源代码)给它,它生产出产品(可执行文件),然后你可以把这个产品拿去任何地方使用(运行)。这个命令用于正式构建你的应用,准备部署。
- 示例:
go build ./cmd/server
(在当前目录生成一个名为server
的文件) 或go build -o bin/app ./cmd/server
(在bin
目录下生成一个名为app
的文件)。
- 作用:将 Go 源代码编译成一个可执行的二进制文件,并把它放在你当前所在的目录或指定的输出目录(使用
-
go install
: 编译并“安装”到指定位置- 作用:它比
go build
多做一步。它也会编译源代码,但它会把生成的可执行文件移动到你的GOPATH/bin
目录或者GOBIN
环境变量指定的目录。这样,你就可以在系统的任何地方直接通过名字运行这个命令了(前提是你已经将那个bin
目录添加到了系统的PATH
环境变量中)。 - 通俗解释:不仅“生产”出产品,还帮你把产品放到了一个“全局货架”上。这样你不管在哪个房间(哪个目录),都能直接拿到这个产品来用,而不需要跑回生产车间(项目目录)。
- 示例:
go install ./cmd/server
(编译后,server
可执行文件会出现在GOPATH/bin
中)。
- 作用:它比
包管理命令 (管理项目依赖)
-
go get
: 下载并安装包- 作用:用于下载指定的第三方库(包)到你的本地。在 Go Modules 模式下,它会自动更新你的
go.mod
和go.sum
文件来记录这个新的依赖。 - 通俗解释:就像给你的项目“采购零件”。项目需要一个新功能(比如操作 Redis),你就用
go get
去“采购”一个现成的 Redis 库回来。 - 示例:
go get github.com/go-redis/redis/v8
- 作用:用于下载指定的第三方库(包)到你的本地。在 Go Modules 模式下,它会自动更新你的
-
go mod tidy
: 整理依赖- 作用:这是 Go Modules 中非常重要的一个命令。它会检查你所有的
.go
源代码文件,找出你import
了哪些包,然后:- 移除
go.mod
文件中你没用到的依赖。 - 添加
go.mod
文件中你用到了但缺失的依赖。 - 确保
go.sum
文件与go.mod
和实际代码需求完全同步。
- 移除
- 通俗解释:就像一个“仓库管理员”。它会盘点你的项目到底需要哪些“零件”,然后把多余的清走,把缺少的补上,保证你的“库存清单” (
go.mod
) 和实际库存 (go.sum
) 是完全准确的。在提交代码前执行一次这个命令是个好习惯。 - 示例:
go mod tidy
- 作用:这是 Go Modules 中非常重要的一个命令。它会检查你所有的
代码质量与工具命令
-
go fmt
: 格式化代码- 作用:自动按照 Go 官方推荐的风格来格式化你的代码,比如调整缩进、空格等。它不改变代码逻辑,只改变外观。
- 通俗解释:一个“代码洁癖整理师”。不管你的代码写得多乱,它都能一键帮你整理得整整齐齐,符合统一的“收纳标准”。这让团队协作变得非常愉快,因为所有人的代码风格都一样。
- 示例:
go fmt ./...
(格式化当前目录及所有子目录下的.go
文件)。
-
go test
: 运行测试- 作用:执行项目中的测试代码(也就是
_test.go
结尾的文件)。它可以帮你验证代码的正确性。 - 通俗解释:一个“质量检测员”。它会运行你编写的各种测试用例,确保你写的每个函数、每个模块都按预期工作,没有 bug。
- 示例:
go test ./...
(运行所有测试)。
- 作用:执行项目中的测试代码(也就是
-
go vet
: 静态代码分析- 作用:检查代码中可能存在的潜在问题或不符合 Go 语言惯用法的写法。比如,它可能会发现一个
Printf
格式化字符串和后面的参数数量不匹配等go build
检查不出来的逻辑错误。 - 通俗解释:一个经验丰富的“代码审查员”。它在你运行代码之前,先帮你过目一遍,凭借它的经验,指出一些可能出问题的地方,提醒你注意。
- 示例:
go vet ./...
- 作用:检查代码中可能存在的潜在问题或不符合 Go 语言惯用法的写法。比如,它可能会发现一个
总结与区分
命令 | 编译? | 运行? | 生成文件位置 | 主要用途 |
---|---|---|---|---|
go run |
✅ | ✅ | 临时目录 (自动删除) | 开发调试,快速验证 |
go build |
✅ | ❌ | 当前目录或指定目录 | 构建应用,准备部署 |
go install |
✅ | ❌ |
GOPATH/bin 或 GOBIN
|
安装工具或库到全局 |
go mod tidy |
❌ | ❌ | 无 (修改 go.mod /go.sum ) |
整理和同步项目依赖 |
Top comments (0)