我有一個$GOPATH/dalu/myproject帶有以下文件的 Go 項目:main.go:package mainimport "dalu/myproject/subpackage"var GV string = "World"func main() { subpackage.Hello()}subpackage/subpackage.go:package subpackageimport ( "fmt" "dalu/myproject")func Hello() { //? fmt.Println("Hello"+GV)}獎勵(如果可以的話):我嘗試了更多子包的類似方法,當嘗試在 main 中導入一個子包時,該子包會導入另一個導入第一個提到的子包的子包,我得到“不允許導入循環(huán)”
1 回答

米脂
TA貢獻1836條經(jīng)驗 獲得超3個贊
正如編譯器所說的那樣,Go 不允許循環(huán)依賴,并且與 C++ 不同,這里沒有前向聲明技巧。
如果你有一個州: A imports B AND B imports A
這意味著您需要將它們之間共享的任何內(nèi)容移動到 package C
,然后執(zhí)行以下操作: A imports B, C AND B imports C
每個人都很開心!
或者在您的示例中,添加一個名為的文件dalu/myproject/gv/gv.go
并在其中定義 this GV
。然后在這兩個導入main
和subpackage
- 1 回答
- 0 關(guān)注
- 207 瀏覽
添加回答
舉報
0/150
提交
取消