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

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

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

Go
一只斗牛犬 2022-07-25 10:45:44
所以我制作了一个基本的 go 包,它只在终端中为你提供彩色文本,现在我已经配置了这些东西,为包创建了 go mod,但是当我运行正在导入包的文件时,它给了我这个错误import cycle not allowedpackage main        imports github.com/Rachit4/colora        imports github.com/Rachit4/colora我的 main.go 文件是package mainimport "github.com/Rachit4/colora"func main() {        red("test")}
查看完整描述

2 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

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



查看完整回答
反对 回复 2022-07-25
?
慕容3067478

TA贡献1773条经验 获得超3个赞

更新

在评论中进一步澄清之后。


您的模块未初始化。在此处和此处查找官方 Go 教程。我将在答案中逐步向您展示。


您首先需要go mod init在项目的根目录中使用。我假设您使用的是 Linux,但您可以在 Windows 中执行相同的命令。


在您的终端内:


$ go mod init github.com/Rachit4/colora

其次,为了让您的主包访问您在包 colora 中的功能,您需要将export它们更改为大写字母。


我的项目结构:


- colora (module github.com/Rachit4/colora)

  - go.mod

  - colora.go

  - test.go

  - test/

    - main.go

请在我的 Go Playground 中查看代码。


例如,调用同一个包内的函数:


test.go



package colora


func test() {

    red("I am red")

}


test/main.go


package main


import "github.com/Rachit4/colora"


func main() {

  red("i am red") // this won't work

}

colora.go通过大写您的方法导出文件中的函数。


colora.go


func Red(text string) {

    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”


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信