php小編子墨在Go模板中,我們經常需要對照片進行處理,而使用隨機Int可以幫助我們實現一些有趣的效果。隨機Int是一種產生隨機整數的函數,我們可以利用它在模板中對照片進行隨機化的操作,例如隨機展示不同的照片、隨機為照片添加濾鏡效果等。本文將詳細介紹如何在Go模板中使用隨機Int來處理照片,並給出一些實際應用的範例。無論你是初學者還是有一定經驗的開發者,都可以透過本文學習到一些關於Go模板和隨機Int的實用技巧。
我的程式碼中有一個簡單的隨機整數,我將其傳遞給模板
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, })
這個想法是在我的模板中隨機化一張照片(我的資料夾中有 1563 張)
{{範圍.頁}}
<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}}" 會使範本崩潰,就像變數未正確傳遞一樣。也許問題是這是在一個循環內,所以我需要每篇文章一個隨機數字才能顯示照片?
還有其他方法可以直接在範本中執行嗎?
更新
感謝我現在得到的指導
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, })
在模板中
{{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}}
也嘗試過
<a href="{{.slug}} "> <img src="/public/suisse/suisse{{index $.photos $idx}}.jpg" alt="" /></a>
但不幸的是,一旦我調用,模板就會停止執行
{{index $.Photos $idx}}
我認為這是我這邊的某種打字錯誤?
{{range}}
操作會改變點,因此{{range .pages}}
內的{ {.photo}}
將解析為.pages
的元素。
使用$
來引用“外層”,傳遞給模板執行的原始值:
src="{{$.photo}}"
雖然這只是一個整數,但您可能想要在路徑或 url 中使用它,如下所示:
src="/path/to/images?id={{$.photo}}"
注意:如果您想為所有頁面使用不同的圖像,則必須為每個頁面傳遞不同的數字,而不僅僅是單個數字。然後在頁面中添加一個photo
字段,然後您可以在{{range}}
中引用它,例如原始程式碼中的{{.photo}}
。
您寫道,您無法修改 page
,因為它來自您的資料庫。如果是這樣,則傳遞一段隨機數字並使用 index
存取它們,如下所示:
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, })
在模板中:
{{range $idx, $page := .pages}} <a href="{{.slug}} "><img src="{{index $.photos $idx}}" alt=""/> </a> {{end}}
或註冊一個 random
函數,您可以從模板中呼叫函數:
// 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")
您可以從模板中呼叫它,如下所示:
{{range .Pages}} <a href="{{.Slug}} "><img src="{{random}}" alt=""/> </a> {{end}}
以上是在 Go 模板中對照片使用隨機 Int的詳細內容。更多資訊請關注PHP中文網其他相關文章!