为了账号安全,请及时绑定邮箱和手机立即绑定

具有相对路径的包布局

具有相对路径的包布局

Go
月关宝盒 2022-01-10 17:13:39
我正在学习 Go,我做了这个例子:http : //thenewstack.io/make-a-restful-json-api-go/ 来构建一个简单的 REST API。我已经编译它并且一切正常,但所有源都在主包中。现在我想在包中组织我的 .go 文件,所以我以这种方式将它们移动到一些文件夹中:GOPATH\binGOPATH\pkgGOPATH\src\pack1\Handlers.goGOPATH\src\pack1\Logger.goGOPATH\src\pack1\repo.goGOPATH\src\pack1\Todo.goGOPATH\src\router\Router.goGOPATH\src\router\Routes.goGOPATH\src\Main.goMain.go 使用了所有的路由器包,所以我在导入部分放入:“./router”。Router.go 使用 pack1 包,所以在 Router.go 中我导入了“../pack1”。现在,如果我尝试“去构建 Main.go”,我会得到:router\Router.go:6: imported and not used: "_/D_/GOPATH/src/pack1"router\Router.go:14: undefined: Logger和类似的错误,所以似乎我所做的 pack1 包的导入是错误的。当然,在属于 pack1 的所有文件中,我在标题中放置了“package pack1”定义。我还读到 Go 中不建议使用相对导入,使用远程包(例如广告导入“github.com/myrepo/mypackage”)可能很有用。但我不想使用远程导入;我想马上推送我所有的文件。你能帮我更好地理解在 Go 中的包之间进行本地导入的方法是什么吗?
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

您不应该使用相对导入的原因是它们在$GOPATH. 摆脱导入路径的“相对”部分,因为所有导入都是相对于$GOPATH/src


import (

    "pack1"

    "router"

)

您还需要将您的文件移动Main.go到一个包中,这样您就可以充分利用 go 工具。


查看完整回答
反对 回复 2022-01-10
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

正如 JimB 所说,通读“如何编写 go 代码”链接,特别是https://golang.org/doc/code.html#ImportPaths

  • 所有包都存在于从 $GOPATH/src 开始的目录树中。

  • 导入路径实际上是包的完整路径(从 1 开始)

  • GO 中没有子包。

  • 主包用于创建命令

因此,在您的情况下,您的导入路径将是“pack1”和“router”


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号