Maison >développement back-end >Golang >Comment passer une carte 'créée en cours de route' dans un modèle Go
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
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!