Maison  >  Article  >  développement back-end  >  Comment passer une carte "créée en cours de route" dans un modèle Go

Comment passer une carte "créée en cours de route" dans un modèle Go

WBOY
WBOYavant
2024-02-05 23:39:03618parcourir

Comment passer une carte créée en cours de route dans un modèle Go

Contenu de la question

Je souhaite créer quelque chose comme des composants d'interface utilisateur 100 % réutilisables dans les modèles Go, mais je ne sais pas si cela peut être fait. J'essaie donc de passer à l'étape suivante :

<code>{{define "components/menu-button"}}
<a href="{{.link}}" class="text-white">{{.content}}</a>
{{end}}
</code>

C'est mon composant, il nécessite un map car les propriétés sont en minuscules.

Puis dans ma page d'accueil j'ai un petit menu qui utilise components/menu-button composants 3 fois dans ma barre de navigation :

<code><div class="hidden gap-4 sm:flex">
    {{template "components/menu-button" {"link": "/contact", "content": "Contact"}}}
    {{template "components/menu-button" {"link": "/docs", "content": "Docs"}}}
    {{template "components/menu-button" {"link": "/download", "content": "Download"}}}
</div>
</code>

Mais je ne sais pas si je peux en créer un d'une manière ou d'une autre map comme je l'ai fait dans l'exemple, ce serait comme JSON, mais j'ai essayé.

Au fait, cela m'a donné l'erreur suivante :

unexpected "{" in template clause

Réponse correcte


Les modèles de Go ne prennent pas en charge cette syntaxe.

Ce que vous pouvez faire, c'est déclarer une fonction personnalisée comme

func MakeMap(kvs ...any) map[any]any {
    m := make(map[any]any)
    for i := 0; i < len(kvs)-1; i+=2 {
        m[kvs[i]] = kvs[i+1]
    }
    return m
}

Ensuite, vous pouvez utiliser 使该函数可用于模板(*模板).Funcs, par exemple

t.Funcs(template.FuncMap{"M":MakeMap})

Ensuite, dans le modèle, vous pouvez appeler la fonction à l'aide de la touche M.

{{template "components/menu-button" (M "link" "/contact" "content" "Contact")}}

https://www.php.cn/link/0740bb92e583cd2b88ec7c59f985cb41

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer