Go HTML テンプレートでの条件付きレンダリングの処理
Go で HTML テンプレートをレンダリングする場合、多くの場合、特定の条件に基づいてコンテンツを異なる方法で表示することが必要になります。一般的なアプローチの 1 つは、ネストされた if/elseif/else 構造を使用することです。ただし、多数の条件がある場合、コードが乱雑になる可能性があります。
次の Go 構造体を考えてみましょう。
const ( paragraph_hypothesis = 1<<iota paragraph_attachment = 1<<iota paragraph_menu = 1<<iota ) type Paragraph struct { Type int // paragraph_hypothesis or paragraph_attachment or paragraph_menu }
次の要素に依存する方法で段落を表示したいとします。彼らのタイプ。次のようなネストされた if ステートメントを使用することは可能ですが、
{{range .Paragraphs}} {{if .IsAttachment}} -- attachment presentation code -- {{else}}{{if .IsMenu}} -- menu -- {{else}} -- default code -- {{end}}{{end}} {{end}}
このアプローチは、型が増えると扱いにくくなり、(IsSomething などの関数を使用した) 乱雑な Go コードと (ネストされた {{end} を使用した) テンプレート コードの両方が生成されます。
幸いなことに、Go テンプレートには、else if 構造というよりクリーンなソリューションがあります。これを使用すると、上記のテンプレートを次のように単純化できます:
{{range .Paragraphs}} {{if .IsAttachment}} -- attachment presentation code -- {{else if .IsMenu}} -- menu -- {{else}} -- default code -- {{end}} {{end}}
else if を使用すると、複数のネストされた if ステートメントの必要性がなくなり、テンプレート コードがより簡潔で理解しやすくなります。
以上がElse If を使用して Go HTML テンプレートで条件付きレンダリングを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。