मुझे प्रलेखन में यह प्रतीत नहीं होता है, क्या कोई गारंटी है कि फ़ील्ड का ऑर्डर स्ट्रक्चर में घोषित ऑर्डर से मेल खाता है? मुझे पता है ऐसा लगता है कि यह तर्कसंगत रूप से (मेमोरी लेआउट के कारण) होगा, और ऐसा लगता है कि यह भी इस तरह से प्रदर्शन करता है, लेकिन बस सुनिश्चित कर रहा है। मैं कोड को बाद में तोड़ना नहीं चाहता हूं अगर यह गारंटी नहीं है।टाइप करें। फ़ील्ड() ऑर्डर
उदाहरण के लिए, अगर मैं
type Foo struct {
bar string `tag:"bar"`
baz string `tag:"baz"`
barbaz string `tag:"barbaz"`
}
था और मैं इस कोड भाग गया:
var c Foo
t := reflect.TypeOf(c)
nf := t.NumField()
tags := make([]string, nf)
for f := 0; f < nf; f++ {
tags[f] = t.Field(f).Tag.Get("tag")
}
चाहेंगे ["bar", "baz", "barbaz"]
होने की गारंटी दी जा tags
?
क्या [Value.FieldByName] (https://golang.org/pkg/reflect/#Value.FieldByName) आपके मामले में सहायता करेगा? –
मैं सिर्फ कुछ के लिए टैग नाम चाहता था, यह मुझे आलसी प्रोग्रामर होने और थोड़ा कम कोडिंग करने की कोशिश कर रहा था (जो हमेशा एक टन में अधिक काम करता है)। मुझे नहीं पता कि मैं अब उस विधि से चिपकने जा रहा हूं, अब मैं जवाब में थोड़ी दिलचस्पी रखता हूं। – user3591723
भले ही जीसी (मानक गो कंपाइलर) और जीसीसीजीओ संरचना क्षेत्रों को दोबारा नहीं बनाते हैं, मैं किसी ऑर्डरिंग पर भरोसा नहीं करता हूं। दस्तावेज में कोई स्पष्ट गारंटी नहीं है। – thwd