ホームページ >バックエンド開発 >Golang >Go テンプレートの出力をキャプチャして変数に割り当てる方法は?

Go テンプレートの出力をキャプチャして変数に割り当てる方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-23 01:22:09215ブラウズ

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

Go テンプレートの出力をキャプチャまたは変数に割り当てる

Go テンプレート内で、目標は以下をエミュレートすることです:

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

ただし、このアプローチでは、「予期しない が見つかりません」というエラーが発生します。 operand."

ソリューション

Go には、テンプレートの実行結果をキャプチャするための組み込みメソッドが提供されていません。代わりに、このタスクを実行する関数を登録します。

関数の登録

関数を登録するには、Template.Funcs() 関数を使用します。 Template.ExecuteTemplate() で名前付きテンプレートを実行し、bytes.Buffer をターゲットとして使用して、テンプレートの直接実行結果をバッファにキャプチャします。

package main

import (
    "bytes"
    "html/template"
    "log"
    "os"
)

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 {
        log.Fatal(err)
    }
}

const tmpl = `{{define "my-template"}}my-template content{{end}}
See result:
{{$var := execTempl "my-template"}}
{{$var}}
`

使用法

登録された execTempl() 関数を使用して、「my-template」テンプレートを実行します。結果を $var テンプレート変数に保存し、出力に追加したり、他の関数に渡すことができます。

Output

See result:
my-template content

出力は「」の結果をキャプチャすることに注意してください。 my-template" テンプレートを作成し、メイン テンプレート内に表示します。

以上がGo テンプレートの出力をキャプチャして変数に割り当てる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。