2014-11-28 11 views
6

Czy można uzyskać nazwę Enum bez tworzenia func (TheEnum) String() string w Golang?Czy można uzyskać nazwę Enum bez tworzenia String() w Golang

const (
MERCURY = 1 
VENUS = iota 
EARTH 
MARS 
JUPITER 
SATURN 
URANUS 
NEPTUNE 
PLUTO 
) 

lub czy istnieje sposób na zdefiniowanie stałych w locie? Znalazłem dwa sposoby struct opartych i string opartych zarówno sposób, ale sprawiają nam wpisywać były z częstotliwością etykietami 1 więcej czasu (lub kopiuj-wklej i cytowanie lub za pomocą makra redakcji)

+3

Należy również zauważyć, że [wszystkie identyfikatory kapitału nie są idiomatyczne Go] (https://github.com/golang/go/wiki/CodeReviewComments#mixed-caps). –

Odpowiedz

16

AFAIK, no nie można tego zrobić bez jawnie wpisując nazwę jako ciąg. Ale można użyć stringer tool z pakietu standardowych narzędzi, aby to zrobić dla Ciebie:

Na przykład, biorąc pod uwagę ten urywek,

package painkiller 

type Pill int 

const (
    Placebo Pill = iota 
    Aspirin 
    Ibuprofen 
    Paracetamol 
    Acetaminophen = Paracetamol 
) 

uruchomieniu tej komendy

stringer -type=Pill 

w taki sam katalog utworzy plik pill_string.go, w pakiecie środków przeciwbólowych, zawierający definicję

func (Pill) String() string 

Jest to zalecane do stosowania z poleceniem go generate w Go 1.4+.

Powiązane problemy