簡體   English   中英

訪問排序對列表的第一項

[英]Access first item of sorted pair list

我是Go模板的新手,正在嘗試訪問SortedPair列表中的第一個元素。 我嘗試了{{ (index .Labels.SortedPairs 1)}}{{ .Name }} = {{ .Value }}但這不起作用,我can't evaluate field Name in type template.Alert

有沒有辦法獲得第一個要素? 當它是{{range}} ,它可以正常工作,但顯示太多元素。

謝謝

請注意,第一個索引為0而不是1

您可以在顯示列表的NameValue時對列表進行索引:

{{(index .Labels.SortedPairs 0).Name}} = {{(index .Labels.SortedPairs 0).Value}}

但是,如果將其分配給變量,則會更短:

{{$first := index .Labels.SortedPairs 0}}{{$first.Name}} = {{$first.Value}}

更清楚的是,如果您使用{{with}}操作:

{{with index .Labels.SortedPairs 0}}{{.Name}} = {{.Value}}{{end}}

讓我們測試3個變體:

type Pair struct {
    Name, Value string
}

var variants = []string{
    `{{$first := index .SortedPairs 0}}{{$first.Name}} = {{$first.Value}}`,
    `{{(index .SortedPairs 0).Name}} = {{(index .SortedPairs 0).Value}}`,
    `{{with index .SortedPairs 0}}{{.Name}} = {{.Value}}{{end}}`,
}

m := map[string]interface{}{
    "SortedPairs": []Pair{
        {"first", "1"},
        {"second", "2"},
    },
}

for _, templ := range variants {
    t := template.Must(template.New("").Parse(templ))
    if err := t.Execute(os.Stdout, m); err != nil {
        panic(err)
    }
    fmt.Println()
}

輸出(在Go Playground上嘗試):

first = 1
first = 1
first = 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM