我的代码很简单。
Project/
main.go
pokemons/
pokemon.go
pokeTrainers/
pokeTrainer.go
我有一些神奇宝贝训练师,其定义如下:
package pokeTrainers
import "../pokemons"
type PokeTrainer struct {
name string
pokemon []Pokemon
}
还有一些神奇宝贝:
package pokemons
import "../pokeTrainers"
type Pokemon struct {
name string
pokeTrainers PokeTrainer
}
主要包装是:
package main
import (
"fmt"
"./pokemons"
"./pokeTrainers"
)
func main() {
fmt.Printf("ERROR CIRCULAR IMPORT")
与往常一样,当我遇到错误时,我会将其复制粘贴到google上。我了解什么是循环导入,以及人们如何使用接口修复它,以使用另一个包中的方法而不导入它。但就我而言,问题不是使用方法,而是使用另一个包中定义的实际Type。
因此,您可能会说:“伙计,您很笨!您只需要将所有内容放在同一包装上就可以了!” 抱歉,我来自Java,我希望代码保持干净。;)
我看到了此链接,建议使用第三方软件包?但是您必须想象我不仅只有pokemon和pokeTrainer,我还有更多具有内部类型和许多方法的软件包。
你怎么看 ?如何正确修复此错误?我是Go的初学者
可以使用单个包,因此不需要导入。
或将您的一个软件包指定为“主”,然后将两个软件包中所需的“所有内容”放入此“主”中,这样,只有另一个软件包才需要按定义导入“ master”(而“ master”则不需要无需导入其他)。
或者,您必须为两者都需要的东西创建第3个程序包,而您当前的2个程序包只需导入此第3个通用程序包。
PS并且不要使用相对进口。始终使用完整的软件包路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句