现在有一个项目包含如下文件
- go.mod
- main.go
- demo.go
main.go 文件内容如下
|
|
demo.go 文件内容如下
|
|
直接在项目目录下执行 go run main.go
或者使用 VSCode、Goland 等进行编译可能会出现异常
|
|
在终端运行/编译的时候将 go run main.go
修改为 go run .
(.
是 main 包所在的路径,需要根据项目情况进行修改)程序即可正常运行
在 VSCode 中可以通过如下配置来避免此问题
1、打开 VSCode 的运行和调试窗口
(快捷键 Ctrl+Shift+D
)
2、点击 创建 launch.json 文件
3、选择 Go:Launch Package
4、上一步会创建并打开 .vscode/launch.json 文件,文件内容如下
|
|
修改其中 program
字段的值为 "${workspaceFolder}"
,这时再按下 F5 就会发现程序正常运行了
workspaceFolder
表示当前工作区的根目录,单项目一般指项目的根目录。如果 main 包在其他目录下,将 program 的值改为对应的路径即可。比如我的 main 包在项目的 cmd/single/
下,program 的值就需要改为 "${workspaceFolder}/cmd/single"
简而言之就是运行/编译项目的时候需要指定 main 包所在的目录,而非指定 main 方法所属的文件。在编译 go 程序的时候单纯指定 main 方法所在的文件,同目录下其他 main 包里的内容是不会被检索和编译的