Golang结构的静态成员

时间:2018-12-01 20:46:06

标签: go

说我有一个结构体:

type DriverData struct {
    TypePath string = "Foo.Bar.DriverData"
}

我希望能够引用TypePath而不必创建该结构的实例,例如:

typePath := DriverData.TypePath

但是在Golang中是不可能的。

所以我在想-也许有一种方法可以创建地图,并将类型与字符串相关联,例如:

type DriverData struct {

}

type PilotData struct {

}

type BoatmasterData struct {

}

typeMap := map[struct]string{
   DriverData: "Foo.Bar.DriverData",
   PilotData:   "Foo.Bar.PilotData",
   BoatmasterData: "Foo.Bar.BoatmasterData",
}

问题:

这是在结构上创建静态属性的最佳方法吗?像这样在地图中存储静态属性吗?

1 个答案:

答案 0 :(得分:3)

您可以定义为您提供这些值的方法:

type DriverData struct {
}

func (DriverData) Path() string {
    return "Foo.Bar.DriverData"
}

type PilotData struct {
}

func (PilotData) Path() string {
    return "Foo.Bar.PilotData"
}

type BoatmasterData struct {
}

func (BoatmasterData) Path() string {
    return "Foo.Bar.BoatmasterData"
}

那是你想要的吗?

请参见https://play.golang.org/p/zR7RZwMVEdf