2

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

3

1 Answer 1

5

Go does not support enums. You should either define your enumerated fields as vars 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 } } 
Sign up to request clarification or add additional context in comments.

2 Comments

Is there any way to namespace them? For example, so one can use MyStructs.EnumValue1() for example
If you place these in their own package of course @ByronCoetsee

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.