आप एक enum मुद्रित करते हैं जो "% v" का उपयोग कर स्ट्रिंगर लागू करता है, यह इसके स्ट्रिंग मान को प्रिंट करेगा। यदि आप एक संरचना के अंदर एक ही enum घोषित करते हैं और "% v" का उपयोग कर संरचना मुद्रित करते हैं, तो यह enum के numeric value को प्रिंट करेगा। क्या एनम फ़ील्ड के स्ट्रिंग वैल्यू को मुद्रित करने का कोई तरीका है?स्ट्रिंग के रूप में गो प्रिंट एनम फ़ील्ड कैसे बनाएं?
नमूना (https://play.golang.org/p/AP_tzzAZMI):
package main
import (
"fmt"
)
type MyEnum int
const (
Foo MyEnum = 1
Bar MyEnum = 2
)
func (e MyEnum) String() string {
switch e {
case Foo:
return "Foo"
case Bar:
return "Bar"
default:
return fmt.Sprintf("%d", int(e))
}
}
type MyStruct struct {
field MyEnum
}
func main() {
info := &MyStruct{
field: MyEnum(1),
}
fmt.Printf("%v\n", MyEnum(1))
fmt.Printf("%v\n", info)
fmt.Printf("%+v\n", info)
fmt.Printf("%#v\n", info)
}
प्रिंटों:
Foo
&{1}
&{field:1}
&main.MyStruct{field:1}
इस का एक dup है http://stackoverflow.com/questions/27187132/is- यह संभव-से-गेट-एनम-नाम-बिना-निर्माण-स्ट्रिंग-इन-गोलांग, जाने के लिए enum का नाम पाने का कोई तरीका नहीं है, आपको – GarMan
@GarMan को स्ट्रिंग करने जैसे टूल के साथ लूट बनाने की आवश्यकता है सवाल एक नहीं है 'स्ट्रिंग()' विधि को लिखने या उत्पन्न करने के बारे में बताएं, यह पहले से ही 'स्ट्रिंग()' को जोड़ता है, फिर भी 'fmt' पैकेज इसे कॉल नहीं करता है जब एक रैपर' स्ट्रक्चर '(या पॉइंटर) इसे करने के लिए) मुद्रित है। – icza
@ गैटिस आपको फ़ील्ड को निर्यात करने की आवश्यकता है। मैंने नमूना के साथ जवाब जोड़ा है। कृपया जांचें और अगर यह आपकी समस्या को हल करता है तो इसे स्वीकार करें –