亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何修復我的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 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號