相关推荐recommended
导包bug,is not in std以及no non-test Go files in的处理
作者:mmseoamin日期:2023-12-14

一、在02那篇文章中我有提到这个is not in std这个错误,这里我搞了好久才正常。

首先分析一下什么意思,它说我们的目标文件包不存在,那么第一可能是我们的路径错了,第二就是我们包的主从文件逻辑错了。

1.路径就是我们src后面的路径,那么代码中引入的没问题,就是我们呢GOPATH环境变量的路径错了,首先GOPATH/src也就是我们环境变量的路径现在停在了我们的src文件下(打开src文件了),那么我们环境变量的路径就必须是src以上的一层,即不包括src,其次一定要检查好拼写错误,我就是拼写错误外加逻辑错误导致的找不到问题!!!!

2.主从文件逻辑,我们func main的函数的package xxx,xxx一定是我们的程序入口包,也就是main,而我们的从文件不需要关注包名,package只需要和包的名称一样就可以了。其次我们在主程序中访问从文件的变量不是通过它的文件名,而是通过包名访问的!这一点一定要搞清楚。

二、在我解决了上面这个错误后又出现了新的错误(😔真是没完没了了😔)

no non-test Go files in  <文件路径>

导包bug,is not in std以及no non-test Go files in的处理,第1张

这是我最后成功的文件名和包名,但是当时我的从文件名是power_test.go,千万别小瞧这个下划线test,可能在别的IDE中没什么问题,但是在go中,这个下划线的出现就完全不同了,

Go当中*_test.go结尾的文件不是go build命令编译的目标,而是go test编译的目标。

go test 子命令是Go语言包的测试驱动程序。

很混乱是吧,我也不懂,那么我们看看gpt怎么说(元芳,你怎么看~~😄)

导包bug,is not in std以及no non-test Go files in的处理,第2张

简单来说,我误打误撞的编译了Go的测试文件,也就是go test 和go build 本就不是一个方向的东西,我们要编译代码要用build,我们要测试代码要用test,So,错了........,改一下名字就好了

~~在世界的某个角落,一个成熟的测试文件遇到了正值青春的build,无论测试文件多么的美丽,给build留下了多么难以磨灭的触动,但终究是错误的时间点遇见了错误的对象罢了/(ㄒoㄒ)/