Is it possible to get Enum name without creating String() in Golang

前端 未结 2 672
一个人的身影
一个人的身影 2020-12-18 21:57

Is it possible to get Enum name without creating func (TheEnum) String() string in Golang?

const (
 MERCURY = 1
 VENUS = iota
 EARTH
 MARS
 JUPI         


        
相关标签:
2条回答
  • 2020-12-18 21:58

    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+.

    0 讨论(0)
  • 2020-12-18 21:58

    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
    )
    
    0 讨论(0)
提交回复
热议问题