如何通过模板中的索引获取字段?

How to get a field by index in template?

我将 articles 的一部分发送到模板中。每个 article 结构如下:

type Article struct {
    ID        uint32        `db:"id" bson:"id,omitempty"` 
    Content   string        `db:"content" bson:"content"`
    Author    string        `db:"author" bson:"author"`
    ... 
}

我可以遍历 {{range $n := articles}} 中的 articles 切片并获取每个 {{$n.Content}} 但我想要的是只有第一个(在范围循环之外)用于标题。 我尝试的是:

{{index .articles.Content 0}}

但我得到:

Template File Error: template: articles_list.tmpl:14:33: executing "content" at <.articles.Content>: can't evaluate field Content in type interface {}

如果我只是调用

{{index .articles 0}}

显示整篇文章[0] object.

我该如何解决这个问题?

索引函数访问指定数组的第n个元素,所以写作

{{ index .articles.Content 0 }}

本质上是在尝试写articles.Content[0]

你会想要类似于

的东西

{{ with $n := index .articles 0 }}{{ $n.Content }}{{ end }}

更简洁的方式是:

{{(index .articles.Content 0).Content }}

这相当于 articles[0].Content