Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-02-05 23:39:03
avant
616 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion


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
}
Copier après la connexion

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

t.Funcs(template.FuncMap{"M":MakeMap})
Copier après la connexion

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")}}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal