猿问

go - 如何在golang中的一个存储库下在它们之间导入包?

我想了解如何在后面的示例中正确导入包。


我已经阅读了这个主题(如何在 golang 中使用自定义包?),但它没有解释我想要理解的内容。


例如,我想创建包以在我的程序中进一步使用它并在 github.com 上发布。在我看来,代码应该是这样组织的:


src/

  github.com/

    username/

      repository/

        lib1.go #package repository

        lib2.go #package repository

        sublib/

          sublib1.go #package sublib

          sublib2.go #package sublib

      ...


  myproject/

    programname.go #package main

    #there is no problem how to import my repository here:

    #import "github.com/username/repository"

    #or import "github.com/username/repository/sublib" 

好的,此时我想了解如何在 中导入repository的代码,repository/sublib反之亦然。我认为问题更针对内部导入(在一个存储库下)。


第一个解决方案显然是 - 通过完整路径导入包:


github.com/username/repository在sublib1.go和

github.com/username/repository/sublib 在 lib1.go

嗯,但是如果我将来改变路径怎么办?可能有导入内部包更好的办法。我也正在面临着一个问题,当我输入github.com/username/repository的sublib1.go(我得到错误信息import cycle not allowed)。


我希望我已经解释得很好来回答这个问题。


POPMUISE
浏览 194回答 2
2回答

吃鸡游戏

在 Go 中不能有循环导入,它们是明确禁止的。您唯一的选择是重新考虑拆分包的方式,以免出现循环。
随时随地看视频慕课网APP

相关分类

Go
我要回答