Maison >développement back-end >Golang >Utilisation d'un Int aléatoire pour les photos dans le modèle Go
Modèles Zimo In Go de l'éditeur php, nous avons souvent besoin de traiter des photos, et l'utilisation de random Int peut nous aider à obtenir des effets intéressants. Random Int est une fonction qui génère des entiers aléatoires. Nous pouvons l'utiliser pour effectuer des opérations aléatoires sur des photos dans des modèles, telles que l'affichage aléatoire de différentes photos, l'ajout aléatoire d'effets de filtre aux photos, etc. Cet article détaillera comment utiliser des modèles Ints in Go aléatoires pour traiter des photos et donnera quelques exemples d'applications pratiques. Que vous soyez débutant ou développeur expérimenté, vous pouvez apprendre quelques conseils pratiques sur les modèles Go et les Ints aléatoires dans cet article.
J'ai un simple entier aléatoire dans mon code que je passe à un modèle
min := 1 max := 1563 photo := rand.intn(max - min + 1) fmt.println(photo) tmpl.executetemplate(w, "index.html", struct { pages []page currentpage int totalpage int nextpage int previouspage int lastpage int shownext bool showprevious bool photo int }{ pages: pages, currentpage: pageindex + 1, totalpage: totalpaginationpage, nextpage: pageindex + 1, previouspage: pageindex - 1, lastpage: totalpaginationpage - 1, shownext: pageindex+1 < totalpaginationpage, showprevious: pageindex-1 >= 0, photo: photo, })
L'idée est de randomiser une photo dans mon modèle (j'en ai 1563 dans mon dossier)
{{range.page}}
<div id="content"> <div class="card"> <p> <div class="card-img"> <a href="{{.slug}} "> <img src="{{.photo}}" alt="" /></a> </div> <div class="card-info"> <div class="card-info-title"> <a href="{{.slug}} " >{{.title}} </a> </div>
src="{{.photo}}" fera planter le modèle comme si la variable n'avait pas été transmise correctement. Peut-être que le problème est que c'est dans une boucle, j'ai donc besoin d'un nombre aléatoire par message pour afficher les photos ?
Existe-t-il un autre moyen de le faire directement dans le modèle ?
Mise à jour
Merci pour les conseils que je reçois maintenant
min := 1 max := 1563 photos := make([]int, len(pages)) for i := range photos { photos[i] = rand.intn(max - min + 1) } tmpl.executetemplate(w, "index.html", struct { pages []page currentpage int totalpage int nextpage int previouspage int lastpage int shownext bool showprevious bool photo []int }{ pages: pages, currentpage: pageindex + 1, totalpage: totalpaginationpage, nextpage: pageindex + 1, previouspage: pageindex - 1, lastpage: totalpaginationpage - 1, shownext: pageindex+1 < totalpaginationpage, showprevious: pageindex-1 >= 0, photo: photos, })
Dans le modèle
{{range $idx, $page := .pages}} <div id="content"> <div class="card"> <p> <div class="card-img"> <a href="{{.slug}} "> <img src="{{index $.photos $idx}}" alt="" /></a> </div> <div class="card-info"> <div class="card-info-title"> <a href="{{.slug}} " >{{.title}} </a> </div> <div class="card-info-category"> <p> tags: </p> <ul> <li> {{.tags}} </li> </ul> </div> <div class="card-info-date"> {{.date}} </div> </div> </p> </div> </div> {{end}}
Aussi essayé
<a href="{{.slug}} "> <img src="/public/suisse/suisse{{index $.photos $idx}}.jpg" alt="" /></a>
Mais malheureusement, une fois que j'appelle, le modèle cesse de s'exécuter
{{index $.Photos $idx}}
Je pense que c'est une sorte de faute de frappe de ma part ?
{{range}}
操作会更改点,因此 {{range .pages}}
内的 {{.photo}}
将解析为 .pages
éléments.
Utilisez $
pour faire référence à la valeur brute "externe" transmise à l'exécution du modèle :
src="{{$.photo}}"
Bien qu'il ne s'agisse que d'un nombre entier, vous souhaiterez peut-être l'utiliser dans un chemin ou une URL comme celui-ci :
src="/path/to/images?id={{$.photo}}"
Remarque : Si vous souhaitez utiliser des images différentes pour toutes les pages, vous devez transmettre un numéro différent pour chaque page, pas seulement un numéro unique. Ajoutez ensuite un photo
字段,然后您可以在 {{range}}
中引用它,如原始代码中的 {{.photo}}
à la page.
Vous avez écrit que vous ne pouvez pas modifier page
,因为它来自您的数据库。如果是这样,则传递一段随机数并使用 index
y accéder comme suit :
min := 1 max := 1563 photos := make([]int, len(pages)) for i := range photos { photos[i] = rand.intn(max - min + 1) } tmpl.executetemplate(w, "index.html", struct { pages []page currentpage int totalpage int nextpage int previouspage int lastpage int shownext bool showprevious bool photo []int }{ pages: pages, currentpage: pageindex + 1, totalpage: totalpaginationpage, nextpage: pageindex + 1, previouspage: pageindex - 1, lastpage: totalpaginationpage - 1, shownext: pageindex+1 < totalpaginationpage, showprevious: pageindex-1 >= 0, photo: photos, })
Dans le modèle :
{{range $idx, $page := .pages}} <a href="{{.slug}} "><img src="{{index $.photos $idx}}" alt=""/> </a> {{end}}
Ou enregistrez une random
fonction que vous pouvez appeler à partir du modèle :
// parse the template as you did, but first register a random function: min, max := 1, 1563 tmpl, err := template.new("").funcs(template.funcmap{ "random": func() int { return rand.intn(max - min + 1) }, }).parsefiles("template-name.html")
Vous pouvez l'appeler à partir d'un modèle comme celui-ci :
{{range .Pages}} <a href="{{.Slug}} "><img src="{{random}}" alt=""/> </a> {{end}}
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!