Maison >développement back-end >Golang >Comment gérer le rendu conditionnel dans les modèles Go HTML avec Else If ?

Comment gérer le rendu conditionnel dans les modèles Go HTML avec Else If ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-13 08:03:021041parcourir

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

Gestion du rendu conditionnel dans les modèles HTML Go

Lors du rendu des modèles HTML dans Go, il est souvent nécessaire d'afficher le contenu différemment en fonction de conditions spécifiques. Une approche courante consiste à utiliser des constructions if/elseif/else imbriquées. Cependant, dans les cas comportant un grand nombre de conditions, cela peut conduire à un code encombré.

Considérez la structure Go suivante :

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
}

Vous souhaitez afficher les paragraphes d'une manière qui dépend de leur type. Bien qu'il soit possible d'utiliser des instructions if imbriquées comme celle-ci :

{{range .Paragraphs}}
    {{if .IsAttachment}}
        -- attachment presentation code  --
    {{else}}{{if .IsMenu}}
        -- menu --
    {{else}}
        -- default code --
    {{end}}{{end}}
{{end}}

cette approche devient lourde avec plus de types, ce qui entraîne à la fois du code Go encombré (avec des fonctions comme IsSomething) et du code modèle (avec {{end} imbriqué }).

Heureusement, il existe une solution plus propre dans les modèles Go : la construction else if. En utilisant cela, vous pouvez simplifier le modèle ci-dessus comme suit :

{{range .Paragraphs}}
    {{if .IsAttachment}}
        -- attachment presentation code  --
    {{else if .IsMenu}}
        -- menu --
    {{else}}
        -- default code --
    {{end}}
{{end}}

En utilisant else if, vous pouvez éliminer le besoin de plusieurs instructions if imbriquées, rendant le code de votre modèle plus concis et facile à suivre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn