ホームページ >バックエンド開発 >Golang >Go のテンプレート システムに含まれるテンプレートにデータを引数として渡すにはどうすればよいですか?

Go のテンプレート システムに含まれるテンプレートにデータを引数として渡すにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-28 04:29:30706ブラウズ

How can I pass data as arguments to an included template in Go's templating system?

テンプレート間でのデータの受け渡し

Go のテンプレート システムでは、特に 1 つのテンプレートをテンプレート内に含める場合、複数のテンプレート間でデータを渡す必要がある場合があります。別の。 「含まれているテンプレートにデータを引数として渡し、そのテンプレート内でアクセスするにはどうすればよいですか?」という疑問が生じます。

これを実現するには、引数を 1 つのスライス値にマージするカスタム関数を利用できます。この関数を登録することで、テンプレート呼び出し内で使用できるようになります。次のコードは、これがどのように行われるかを示しています。

<code class="go">package main

import (
    "fmt"
    "html/template"
)

func main() {
    t, err := template.New("t").Funcs(template.FuncMap{
        "args": func(vs ...interface{}) []interface{} { return vs },
    }).Parse("{{ template \"image_row\" args . 5 }}")
    if err != nil {
        fmt.Println(err)
        return
    }

    err = t.Execute(template.Must(template.ParseFiles("index.html", "image_row.html")), nil)
    if err != nil {
        fmt.Println(err)
        return
    }
}

// index.html
{{ template "image_row" . | 5 }}

// image_row.html
{{ define "image_row" }}
   To stuff here {{index . 0}} {{index . 1}}
{{ end }}</code>

image_row テンプレート内では、組み込みのインデックス関数を使用して引数にアクセスできます。たとえば、{{index . 0}} は、index.html テンプレートから渡された最初の引数 (インデックス 0)、この場合は数値 5 にアクセスします。

このソリューションは、複数のテンプレート間でデータを受け渡し、アクセスするための多用途な方法を提供し、カスタムを可能にします。機能性と効率的なコードの再利用。

以上がGo のテンプレート システムに含まれるテンプレートにデータを引数として渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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