`go run` 默认只编

在 Go 项目中,当主程序逻辑被拆分到多个文件(例如 main.go 和 main2.go)且同属 package main 时,常见错误是:仅执行 go run main.go,导致编译器无法识别 main2.go 中定义的函数(如 somefunc()),报错 undefined: somefunc。这是因为 go run 不会自动扫描当前目录下其他 .go 文件——它严格按命令行参数加载源码,与 go test 或 go build 的“包级编译”行为不同。
✅ 正确做法是显式指定所有参与构建的源文件:
go run main.go main2.go
或使用 shell 通配符(确保无测试文件干扰):
go run *.go
⚠️ 注意事项:
总结:go run 的设计初衷是“快速运行单文件原型”,跨文件协作需主动传递全部依赖源码。掌握 go run file1.go file2.go 这一模式,即可高效调试多文件 main 包,兼顾清晰性与实用性。