ホームページ  >  記事  >  バックエンド開発  >  Else If を使用して Go HTML テンプレートで条件付きレンダリングを処理する方法

Else If を使用して Go HTML テンプレートで条件付きレンダリングを処理する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-13 08:03:021015ブラウズ

How to Handle Conditional Rendering in Go HTML Templates with Else If?

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 サイトの他の関連記事を参照してください。

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