GO 中的结构枚举

我想在我的围棋程序中列举行星。每个行星都有一个通用名称(例如:“金星”)和以天文单位表示的与太阳的距离(例如:0.722)


所以我写了这段代码:


type planet struct {

    commonName string

    distanceFromTheSunInAU float64

}


const(

    venus planet = planet{"Venus", 0.387}      // This is line 11

    mercury planet = planet{"Mercury", 0.722}

    earth planet = planet{"Eath", 1.0}

    mars planet = planet{"Mars", 1.52}

    ...

)

但是 Go 不允许我编译它,并给了我这个错误:


# command-line-arguments

./Planets.go:11: const initializer planet literal is not a constant

./Planets.go:12: const initializer planet literal is not a constant

./Planets.go:13: const initializer planet literal is not a constant

./Planets.go:14: const initializer planet literal is not a constant

你知道我该怎么做吗?谢谢


holdtom
浏览 96回答 1
1回答

潇湘沐

Go 不支持枚举。您应该将枚举字段定义为vars 或为确保不变性,可以使用返回常量结果的函数。例如:type myStruct { ID int }func EnumValue1() myStruct {     return myStruct { 1 } }func EnumValue2() myStruct {     return myStruct { 2 } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go