ホームページ >バックエンド開発 >Golang >Go で HTML テンプレートの値を計算するにはどうすればよいですか?

Go で HTML テンプレートの値を計算するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-15 05:37:02536ブラウズ

How Can You Calculate Values in HTML Templates with Go?

Go を使用した HTML テンプレートの値の計算

Go で HTML テンプレートを使用する場合、内部で計算を実行する必要がある状況に遭遇することがあります。テンプレート自体。ただし、テンプレートは複雑なロジックに使用することを目的としていないため、指定した構文「{{ $length -1 }}」は機能しません。

テンプレート内の値を計算するには、主に 2 つの方法があります。オプション:

  1. 計算結果をパラメータとして渡す:

推奨されるより簡単なアプローチは、テンプレートの外で値を計算し、パラメータとして渡すことです。 。たとえば、マップがあり、最後のインデックスを計算したい場合は、コントローラーでそれを実行し、次のように結果をテンプレートに渡すことができます。

func IndexHandler(w http.ResponseWriter, r *http.Request) {
    m := make(map[string]string)
    // ... populate map ...

    lastIdx := len(m) - 1
    data := struct {
        LastIdx int
    }{
        LastIdx: lastIdx,
    }

    t, err := template.ParseFiles("template.html")
    if err != nil {
        // Handle error
    }
    t.Execute(w, data)
}

テンプレートでは、単に次のように使用できます。 {{.LastIdx}} は、計算された最後のインデックスをレンダリングします。

  1. カスタム関数を登録します:

より複雑な計算が必要な場合、またはテンプレート内でそれらを実行すると、カスタム関数を登録してテンプレートから呼び出すことができます。これを行うには、template.FuncMap タイプを使用し、次のように関数を登録します。

func init() {
    template.Funcs["subtractOne"] = func(x int) int {
        return x - 1
    }
}

テンプレートでは、次のように関数を呼び出すことができます。

{{ $lastIdx := subtractOne (len .) }}
<p>The last index of this map is: {{ $lastIdx }} </p>

これにより、マップの長さから 1 を差し引いて、結果を $lastIdx 変数に保存します。

テンプレートは本格的なプログラミング言語ではなく、その主な目的はデータを表示することであることに注意してください。複雑なロジックは、テンプレートの外部またはカスタム関数を通じて処理する必要があります。

以上がGo で HTML テンプレートの値を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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