VScode下golang 同一个包下不同文件之间函数调用问题
1.问题发现
最近在vscode上学习golang的相关开发,发现这样一个问题:
同文件夹下的两个文件,在都处于main包的情况下,无法在mian()里直接调用另一个文件中的函数,会报错:undefined。
2.原因分析
从语法层面上似乎并无问题,但是Go中main包默认不会加载其他文件, 而其他包都是默认加载的。如果 main 包有多个文件,则在执行的时候需要将其它文件都带上,即执行 go run *.go。
3.问题解决
最简单的办法当然就是都用go run *.go命令执行啦。
那有没有以后都省力一些的呢?
一般来讲,大家用的都是Code runner插件作为运行工具。但是用的时候需要配置以下该插件的settings.json。
由于笔者是小白,所以参考网络上的方案,一共是两个地方需修改。以下列出:
"code-runner.executorMap": {
"go": "cd $dir && go run .", // 替换处1
},
"code-runner.executorMapByGlob": {
"$dir\\*.go": "go" // 替换处2
}
4.注意事项
- 首先,要注意settings.json的更改是改的是用户区还是工作区
- 其次,如果你对settings.json做了更改后发现仍然报错。新建一个文件,将当前文件内容copy过去后删掉原来的,应该就好了。(这个是我自己试出来的,说实话不知道为啥2333)