我目前正在使用Go 1.12模块,真的很厌倦导入。
我正在使用Gin(Web微服务)和Gorm(Golang ORM)来制作REST-API。在使用Golang模块时,一切正常。但在导入本地包时遇到了麻烦
目录树:
go.mod:
module github.com/Aragami1408/go-gorm
go 1.12
require (
github.com/gin-gonic/gin v1.4.0
github.com/jinzhu/gorm v1.9.9
github.com/lib/pq v1.1.1
github.com/satori/go.uuid v1.2.0
)
DB.go:
package db
//code below...
任务.go:
package task
import (
"../db"
)
但是当我运行时,仍然得到这个错误:local import "../db" in non-local package
我在谷歌上搜索了很多,没有任何帮助
3条答案
按热度按时间ars1skjm1#
从“模块是否使用相对导入(如import“./subdir”)?”
在模块中,子目录最终会有一个名称。
如果父目录显示为“
module m
”,则子目录将导入为“m/subdir
”,而不再是“./subdir
”。在您的情况下:
这假设您有
set GO111MODULE=on
,正如下面Silvio Lucas所注解的那样。zujrkrfu2#
如果你使用的是go模块,你可以使用以下命令将你的包替换为本地包:
那就打电话
一切都会正常的
46qrfjad3#
当迁移到“软件包管理器”时,您可以使用以下命令创建文件
go mod
:然后将创建
go.mod
文件:现在你可以利用这个文件来列出你对其他模块的依赖:
你运行它?然后再次检查
go.mod
的内容你很高兴,因为你利用了包管理器的功能,你像老板一样管理依赖关系。
然而……
但是,您忘记了您需要维护所有使用相对路径导入目录的go文件。
示例:
如果有
main.go
您还必须通过将相对路径替换为
[module-name]/relative-path
来进行迁移。在这种情况下,它必须变为: