亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用范圍循環地圖,只迭代一次

使用范圍循環地圖,只迭代一次

Go
慕的地8271018 2022-01-17 18:00:22
我只需要在我的 golang 模板中迭代一次循環,目前它正在循環所有鍵,但我希望它在一次迭代后停止。我怎樣才能做到這一點?{{range .Users}}<div>  {{.Name}}</div>{{end}}
查看完整描述

2 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

兩種解決方案;循環時檢查您的索引是否為0:


{{range $index, $element := . }}{{if eq $index 0 -}}

Item: {{$element}}

{{end}}{{end -}}

或者您可以定義一個“第一個”函數,該函數接受一個切片并將其截斷為長度 1。


{{range first .}}

Item: {{.}}

{{end}}

這是演示兩者的完整代碼,您也可以在操場上嘗試。


package main


import (

    "fmt"

    "os"

    "text/template"

)


var t = template.Must(template.New("x").Parse(

    "[{{range $index, $element := . }}{{if eq $index 0 -}}{{$element}}{{end}}{{end -}}]"))


var funcs = map[string]interface{}{

    "first": func(arg []string) []string {

        if len(arg) > 0 {

            return arg[:1]

        }

        return nil

    },

}


var t2 = template.Must(template.New("x").Funcs(funcs).Parse(

    "[{{range first . }}{{.}}{{end -}}]"))


func main() {

    tmpls := []*template.Template{t, t2}

    for i, t := range tmpls {

        fmt.Println("TEMPLATE", i)

        a := []string{"one", "two", "three"}

        for j := 0; j < len(a); j++ {

            fmt.Println("with input slice of length", j)

            t.Execute(os.Stdout, a[:j])

            fmt.Println()

        }

        fmt.Println()

    }

}


查看完整回答
反對 回復 2022-01-17
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

而不是范圍,給出index一個參數


{{index .Users 0}}

<div>

  {{.Name}}

</div>

{{end}}


查看完整回答
反對 回復 2022-01-17
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號