![](/img/trans.png)
[英]std::pair with a comparable and a non-comparable object needs to be sorted
[英]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
。
您可以在顯示列表的Name
和Value
時對列表進行索引:
{{(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.