如何在go中制作父结构的映射

  • 本文关键字:结构 映射 go go go-map
  • 更新时间 :
  • 英文 :


我来自Java/Kotlin,所以我对Go所在的基于继承的组合世界有点陌生:(

所以在Java中,我可以制作一个

abstract class Pet

和一个子类

class Dog extends Pet
class Cat extends Pet

然后制作

Map<String, Pet> mapOfPets = HashMap();
mapOfPets.put("puppy",  new Dog());
mapOfPets.put("kitty",  new Cat());

从这里开始,我正在尝试在Golang做同样的事情。以下是我的尝试

struct Pet{
// ...
}
struct Dog{
Pet
}
struct Cat{
Pet
}
func () {
petMap := make(map[string]*Pet)
//invalid
petMap["puppy"] = &Dog{ ... } 
petMap["kitty"] = &Cat{ ... }
// valid
puppy2 := &Dog{ ... }
kitty2 := &Cat{ ... }
petMap["puppy2"] = &puppy2.Pet
petMap["kitty2"] = &kitty2.Pet
}()

我知道代码的有效部分应该可以工作,但我正在丢失Dog和Cat类中的内容。我应该如何为映射和/或结构建模,以便能够制作类似于代码中无效部分的内容?

为每个"子类"创建一个映射会很烦人(我知道这里的术语不正确(

附言:任何关于我应该如何做作文的文章或指南都将不胜感激!

谢谢!

为此,您应该使用接口。您的地图将是map[string]Pet,其中Pet是:

type Pet interface {
// methods an implementer of Pet should have
}

然后,您的具体类型(Dog等(将通过使用正确的方法来实现Pet接口。

有关界面的更多信息,请参阅围棋教程、gobyexample等。界面将在任何围棋入门指南中进行广泛描述。

相关内容

  • 没有找到相关文章

最新更新