I would like to enumerate the planets in my Go program. Each planet includes a common name (ex: "Venus") and a distance from the sun in Astronomical Unit (ex: 0.722)
So I wrote this code :
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}
...
)
But Go didn't let me compile this, and gave me this error :
# 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
Do you have any idea of how I could do? Thanks
Go does not support enums. You should either define your enumerated fields as var
s or to ensure immutability, maybe use functions that return a constant result.
For example:
type myStruct { ID int }
func EnumValue1() myStruct {
return myStruct { 1 }
}
func EnumValue2() myStruct {
return myStruct { 2 }
}