首頁 >後端開發 >Golang >如何將 Go 模板輸出擷取到變數中?

如何將 Go 模板輸出擷取到變數中?

Susan Sarandon
Susan Sarandon原創
2024-12-23 04:47:15672瀏覽

How to Capture Go Template Output into a Variable?

在Go 中捕獲模板輸出

在Go 模板中,不可能使用語法{$ 直接將模板輸出分配給變數var : = 模板}。相反,有必要註冊一個自訂函數來捕獲模板輸出。

函數註冊

要註冊函數,請使用 Template.Funcs() 函數。它允許您定義一組可在模板中使用的函數。

範本執行

要執行命名範本並捕獲其輸出,請使用 Template。執行模板()。此函數以緩衝區為目標,可讓您直接將範本輸出寫入緩衝區。

範例

這裡有一個範例,示範了註冊的使用擷取範本的函數輸出:

package main

import (
    "bytes"
    "fmt"
    "text/template"
)

var t *template.Template

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

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

在此範例中,在範本中註冊並使用execTempl() 函數來執行「my- template」 模板並捕獲其輸出,然後將其指派給 $var 模板變數並顯示在輸出中。

以上是如何將 Go 模板輸出擷取到變數中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn