go run在相对子模块上出现错误“找不到包”
我有下面的dir结构go run在相对子模块上出现错误“找不到包”,go,go-modules,Go,Go Modules,我有下面的dir结构 ~/test | lala - lala.go - main.go 内容包括: main.go: package main import ( "fmt" "./lala" _ "github.com/lib/pq" ) func main() { fmt.Println(lala.asd) } 拉拉,走吧: package lala import ( _ "github.co
~/test
| lala
- lala.go
- main.go
内容包括:
main.go:
package main
import (
"fmt"
"./lala"
_ "github.com/lib/pq"
)
func main() {
fmt.Println(lala.asd)
}
拉拉,走吧:
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:找不到包
该行包含securecookie,这是一个远程路径。
我在lala目录中尝试了
go mod init&&go mod tidy
,但错误相同。在导入中不要使用相对路径。导入路径应以项目目录(src文件夹下的目录)开始
改变这个
import "./lala"
到
不要使用相对导入。非常有用。那么解是什么呢?相对路径的对立面是绝对路径。请参考如何编写Go代码。我不使用GOROOT来管理这个项目。事实上,我正试图从GOROOT中脱离出来,以防止我不得不在导入时使用完整的url路径。我原以为模块会有帮助,但很明显,这些模块和GOPATH一样容易损坏。@AxelBayerl,GOROOT从未被用于管理项目。“如何编写Go代码”将一步一步地引导您完成所需内容。
import "asdasd.com/asdasd/lala"