問題:
Go HTML テンプレートで、次のような計算を実行しようとしています。テンプレート内の {{ $length -1 }} は機能しません。この機能はどのように実現できますか?
答え:
残念ながら、HTML テンプレート内で計算を直接実行することはできません。これは、複雑なロジックをテンプレートから分離するという基本的な設計哲学によるものです。
解決策:
代わりに、次の代替アプローチを検討してください:
1.計算結果をパラメータとして渡す:
推奨される方法は、Go コードで必要な値を計算し、それをテンプレート パラメータとして渡すことです。
func main() { length := len(myMap) t := template.Must(template.New("index").Parse(`<p>The last index of this map is: {{ .LastIndex }}</p>`)) t.Execute(os.Stdout, map[string]interface{}{"LastIndex": length - 1}) }
2.カスタム関数の登録:
カスタム関数を登録し、テンプレート内で呼び出すこともできます。これらの関数は計算を実行し、値を返すことができます。
func RegisterCalcFunc(t *template.Template) { t.Funcs["calcIndex"] = func(length int) int { return length - 1 } } func main() { RegisterCalcFunc(t) t := template.Must(template.New("index").Parse(`<p>The last index of this map is: {{ calcIndex .Length }}</p>`)) t.Execute(os.Stdout, map[string]interface{}{"Length": len(myMap)}) }
以上がGo HTML テンプレートで計算を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。