【发布时间】:2020-07-06 12:05:33
【问题描述】:
代码编译得很好,但是当使用 replace 指令将包名映射到本地目录时,Go linter 无法拾取。
我在 VSCode 和 Goland 上都试过这个,两者都有如下所示的 lint 错误。图片是额外信息,所有代码和错误信息都以文本格式显示在下面。
存储库:https://github.com/webberwang/go-lint-error
这是文件夹结构:
/core
/calc
math.go
go.mod
/main
app.go
go.mod
// main/app.go
package main
import (
"fmt"
"github.com/codelabstudios/core/calc" <- ERROR "Cannot resolve directory 'core'"
)
func main() {
result := calc.Add(1, 2) <- ERROR "Unresolved reference 'Add'"
fmt.Println("calc.Add(1, 2) => ", result)
}
// main/go.mod
module github.com/codelabstudios/main
go 1.14
require github.com/codelabstudios/core v0.0.0-00010101000000-000000000000
replace github.com/codelabstudios/core => ../core
// core/calc/math.go
package main
import (
"fmt"
"github.com/codelabstudios/core/calc"
)
func main() {
result := calc.Add(1, 2)
fmt.Println("calc.Add(1, 2) => ", result)
}
// core/calc/go.mod
module github.com/codelabstudios/core
go 1.14
【问题讨论】:
-
您的文件夹结构毫无意义,与您的模块和包不匹配。阅读如何编写 Go 代码并坚持下去。
-
@Volker 我有 2 个模块“core”和“main”,树结构与“go.mod”文件位置有点不同,我更新了它。存储库会给你一个更好的主意。我将模块放在 $GOPATH 之外,因为这种方法限制性太大。
-
首先
go.mod应该在项目级别,即core和main级别。其次,我没有看到github.com/codelabstudios/core/calc的任何存储库。您是否尝试导入您自己的Add函数corepkghttps://github.com/webberwang/go-lint-error/blob/master/core/calc/math.go#L3。 -
@TanveerAlam
core和main是模块,项目级别只打开这些模块。该仓库不存在,因为我正在使用本地模块导入
标签: go visual-studio-code lint goland golint