"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > किसी वेरिएबल में गो टेम्प्लेट आउटपुट को कैसे कैप्चर और असाइन करें?

किसी वेरिएबल में गो टेम्प्लेट आउटपुट को कैसे कैप्चर और असाइन करें?

2024-12-22 को प्रकाशित
ब्राउज़ करें:718

How to Capture and Assign Go Template Output to a Variable?

गो में टेम्पलेट आउटपुट कैप्चर करना

गो टेम्पलेट के भीतर, एक उप-टेम्पलेट के आउटपुट को कैप्चर करना या इसे सीधे एक वेरिएबल पर असाइन करना है डिफ़ॉल्ट रूप से समर्थित नहीं है. हालाँकि, यह एक कस्टम फ़ंक्शन को पंजीकृत करके और टेम्पलेट के परिणाम प्राप्त करने के लिए बाइट्स बफर का उपयोग करके प्राप्त किया जा सकता है।

कस्टम फ़ंक्शन पंजीकरण

टेम्पलेट आउटपुट कैप्चर करने के लिए, रजिस्टर करें Template.Funcs() वाला एक फ़ंक्शन जो टेम्प्लेट नाम को एक तर्क के रूप में लेता है और टेम्प्लेट के आउटपुट को एक स्ट्रिंग के रूप में लौटाता है:

func execTempl(name string) (string, error) {
    buf := &bytes.Buffer{}
    err := t.ExecuteTemplate(buf, name, nil)
    return buf.String(), err
}

टेम्पलेट निष्पादन और परिणाम कैप्चर

Template.ExecuteTemplate() का उपयोग करके 'my-template' नामक उप-टेम्पलेट निष्पादित करें और इसे एक वेरिएबल पर असाइन करें:

{{$var := execTempl "my-template"}}

आउटपुट पुनर्प्राप्ति

कैप्चर किए गए आउटपुट को पुनः प्राप्त करें और आवश्यकतानुसार इसका उपयोग करें:

See result:
{{$var}}

पूर्ण उदाहरण

var t *template.Template

func main() {
    t = template.Must(template.New("").Funcs(template.FuncMap{
        "execTempl": execTempl,
    }).Parse(tmpl))

    if err := t.Execute(os.Stdout, nil); err != nil {
        panic(err)
    }
}

const tmpl = `
{{define "my-template"}}my-template content{{end}}

See result:
{{$var := execTempl "my-template"}}
{{$var}}
`

आउटपुट:

See result:

my-template content
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3