go-run 在相对子模块上给我一个错误 `cannot find package`

标签 go go-modules

我有以下目录结构

~/test
 | lala
  - lala.go
 - main.go

以及内容:

main.go:
package main

import (
        "fmt"

        "./lala"
        _ "github.com/lib/pq"
)

func main() {
        fmt.Println(lala.asd)
}

lala.go:
package lala

import (
        _ "github.com/lib/pq"

        "github.com/gorilla/securecookie"
)

func asd() string {
        return string(securecookie.GenerateRandomKey(32))
}

然后我执行:
~/test$ go mod init asdasd.com/asdasd
~/test$ go mod tidy
~/test$ go run main.go

但我明白了
lala/lala.go:6:2: cannot find package
那一行是带有securecookie的那一行,它是一个远程路径。
我试过go mod init && go mod tidy在 lala 目录中,但错误是相同的。

最佳答案

不要在导入中使用相对路径。您的导入路径应以项目目录(src 文件夹下的目录)开头。

改变这个

import  "./lala"


import  "asdasd.com/asdasd/lala"

关于go-run 在相对子模块上给我一个错误 `cannot find package`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62246683/

相关文章:

go - 为什么我的测试无法识别我的 Golang 包函数?

go - 在本地使用带有 go mod 的子包

go - 如何为 Go Mod/pkg.go.dev 消费者发布更新包?

go - 如何取消引用动态多级指针?

go - cel-go。如何使用自定义对象和时间戳比较

json - Go:JSON 编码嵌套结构;错误地省略了外部字段

go - 如何将一个 Go 模块嵌套在多个 Go 模块中作为本地依赖项

go - 内置库来持久化 BTree,相当于 Java 的 `FileChannel` 和 `ByteBuffer`

go - append() 中的 "..."符号不适用于附加不同类型的 slice

docker - 尝试在 docker 上使用 go mod download 时出错