Go を使用した HTML テンプレートの値の計算
Go で HTML テンプレートを使用する場合、内部で計算を実行する必要がある状況に遭遇することがあります。テンプレート自体。ただし、テンプレートは複雑なロジックに使用することを目的としていないため、指定した構文「{{ $length -1 }}」は機能しません。
テンプレート内の値を計算するには、主に 2 つの方法があります。オプション:
推奨されるより簡単なアプローチは、テンプレートの外で値を計算し、パラメータとして渡すことです。 。たとえば、マップがあり、最後のインデックスを計算したい場合は、コントローラーでそれを実行し、次のように結果をテンプレートに渡すことができます。
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}} は、計算された最後のインデックスをレンダリングします。
より複雑な計算が必要な場合、またはテンプレート内でそれらを実行すると、カスタム関数を登録してテンプレートから呼び出すことができます。これを行うには、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 サイトの他の関連記事を参照してください。