关于golang包引用的坑2(终极解决!)

warning: 这篇文章距离上次修改已过291天,其中的内容可能已经有所变动。

关于包引用的坑2(终极解决!)

上回说到用replace可以解决跨包调用的问题,运行是没问题了,但是在vscode里总是提示没法import xxx。因为vscode默认去gopath和goroot里找包的,显然无法找到。经历了各种搜索、更新vscode、go work init xx,都没有解决我的问题。我只需要调用本地同一个项目里,不同包中的方法。网上各种说法都有,有的说得非常复杂,但实没要么就是连go build都编译不过,要么是像上文那样,能go run,但vscode会报错,并且方法调用连智能提示都没有:cry:!

其实解决起来非常简单,在main.go同级目录,执行go mod init 包名。比如go mod init demo,它会自动在main.go同级目录生成go.mod。其它文件夹里的包只管根据实际命名,比如common文件夹里的userHelp.go,用了package common。那么在main.go里可以通过import "demo/common"来调用,在service模块里同理也是import "demo/common" 就可以调用common模块中的方法。==子模块里根本不需要再go mod init xxx== ,而且还会有智能提示!

vscode有时候会出现无智能提示的情况,重启vscode就好了,这个不知咋解决!

下面两种结构其实都可以的!

image-20230629153542394

image-20230629154009186

none
最后修改于:2023年07月11日 11:32

评论已关闭