Is it possible to get Enum name without creating func (TheEnum) String() string
in Golang?
const (
MERCURY = 1
VENUS = iota
EARTH
MARS
JUPI
AFAIK, no you can't do that without explicitly typing the name as a string. But you can use the stringer tool from the standard tools package to do it for you:
For example, given this snippet,
package painkiller type Pill int const ( Placebo Pill = iota Aspirin Ibuprofen Paracetamol Acetaminophen = Paracetamol )
running this command
stringer -type=Pill
in the same directory will create the file pill_string.go, in package painkiller, containing a definition of
func (Pill) String() string
This is recommended to use with the go generate
command of Go 1.4+.
As a supplement:
Use the following comment in the code can help go generate
know what to generate.
Be careful, there is no space between //
and go:generate
//go:generate stringer -type=Pill
type Pill int
const (
Placebo Pill = iota
Aspirin
Ibuprofen
Paracetamol
Acetaminophen = Paracetamol
)