Golang通告导入结构

Titou :

我的代码很简单。

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的初学者

icza:

可以使用单个包,因此不需要导入。

或将您的一个软件包指定为“主”,然后将两个软件包中所需的“所有内容”放入此“主”中,这样​​,只有另一个软件包才需要按定义导入“ master”(而“ master”则不需要无需导入其他)。

或者,您必须为两者都需要的东西创建第3个程序包,而您当前的2个程序包只需导入此第3个通用程序包。

PS并且不要使用相对进口。始终使用完整的软件包路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章