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!