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

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

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

Go
森林海 2022-08-01 10:34:42
所以我做了一个基本的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贡献1798条经验 获得超7个赞

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


查看完整回答
反对 回复 2022-08-01
?
阿晨1998

TA贡献2037条经验 获得超6个赞

更新

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


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


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


终端内部:


$ 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在构建项目方面有非常宽松的准则 - 他们确实建议将实例的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”


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

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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