猿问

如何修复我的 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")

}


一只斗牛犬
浏览 115回答 2
2回答

凤凰求蛊

您尝试导入的包似乎有问题。我建议阅读文档中的发布 go modules部分。我的预感是 go runtime 没有将其识别为正确的模块(也许尝试在 colora 包中添加 go.mod)。

慕容3067478

更新在评论中进一步澄清之后。您的模块未初始化。在此处和此处查找官方 Go 教程。我将在答案中逐步向您展示。您首先需要go mod init在项目的根目录中使用。我假设您使用的是 Linux,但您可以在 Windows 中执行相同的命令。在您的终端内:$ 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.go通过大写您的方法导出文件中的函数。colora.gofunc Red(text string) {&nbsp; &nbsp; fmt.Println(string(colorRed), text)}现在它将可以main.go调用colora.Red()我建议阅读有关构建项目的内容,尽管 Go 对构建项目有非常宽松的指导方针——他们确实建议将实例的 pakcage 保存在单独的文件夹中。如果你想要更多的结构,你可以查看这个关于 Go 项目布局的GitHub 存储库。旧答案因此,如果我对您的理解正确,您有一个要在新项目中导入的 go 包(“github.com/Rachit4/colora”)?还是它仍然在同一个项目中?如果你在一个新项目中导入它,你是否可能不小心给新项目一个同名的模块?所以例如项目一:github.com/Rachit4/colora/(go.mod 中的模块)colora.go项目二:github.com/Rachit4/colora/(go.mod 中的模块)main.go <-- 导入“github.com/Rachit4/colora”
随时随地看视频慕课网APP

相关分类

Go
我要回答