猿问

如何修复我的golang导入周期错误

所以我做了一个基本的go包,只是在终端中给你彩色文本,现在我已经确认了这些东西,为包创建了go mod,但是当我运行导入包的文件时,它给了我这个错误


import cycle not allowed

package main

        imports github.com/Rachit4/colora

        imports github.com/Rachit4/colora

我的 main.go 文件是


package main


import "github.com/Rachit4/colora"


func main() {

        red("test")

}


森林海
浏览 141回答 2
2回答

元芳怎么了

您尝试导入的包似乎存在问题。我建议从文档中阅读发布go模块部分。我的直觉是go运行时没有认识到它是一个合适的模块(也许尝试在colora包中添加一个go.mod)。

阿晨1998

更新在评论中进一步澄清之后。您的模块未初始化。在此处和此处查找官方 Go 教程。我将逐步向您展示答案。首先需要在项目的根目录中使用。我假设你正在使用Linux,但你可以在Windows中执行相同的命令。go mod init终端内部:$ go mod init github.com/Rachit4/colora其次,为了使您的主包访问您在包colora中的功能,您需要将它们更改为大写字母。export我的项目结构:- colora (module github.com/Rachit4/colora)&nbsp; - go.mod&nbsp; - colora.go&nbsp; - test.go&nbsp; - test/&nbsp; &nbsp; - main.go请在此处查看我的Go Playground以获取代码。例如,调用同一包中的函数:test.gopackage colorafunc test() {&nbsp; &nbsp; red("I am red")}test/main.gopackage mainimport "github.com/Rachit4/colora"func main() {&nbsp; red("i am red") // this won't work}通过使方法大写来导出文件中的函数。colora.gocolora.gofunc Red(text string) {&nbsp; &nbsp; fmt.Println(string(colorRed), text)}现在它将被调用main.gocolora.Red()我建议仔细阅读有关构建项目的信息,尽管Go在构建项目方面有非常宽松的准则 - 他们确实建议将实例的pakcages保存在单独的文件夹中。如果你想要更多的结构,你可以查看这个GitHub存储库,了解Go中的项目布局。旧答案因此,如果我正确理解您,您有一个go包(“github.com/Rachit4/colora”)要在新项目中导入吗?还是它仍然在同一个项目中?如果要在新项目中导入它,您是否可能意外地为新项目提供了一个同名的模块?例如:项目 1:github.com/Rachit4/colora/(go.mod中的模块)colora.go项目 2:github.com/Rachit4/colora/(go.mod中的模块)main.go <-- 导入“github.com/Rachit4/colora”
随时随地看视频慕课网APP

相关分类

Go
我要回答