【发布时间】:2021-08-22 17:14:33
【问题描述】:
我正在为一个学校项目在 Go 中构建一个简单的论坛,并且我正在将一个数据结构传递给一个模板以显示子论坛中的所有帖子。我传递给模板的数据是这样的:
type Data struct {
ID int // ID of the subforum
User User // logged-in user
Posts []Post // all the posts of the subforum
}
Data 结构中的 Post 结构是这样的:
type Post struct {
ID int
Title string
Content string
Date time.Time
[...]
Author User
Comments []Comment
}
Comment 结构类似于 Post 结构。当我显示所有帖子的列表时,我还想显示回复数量和最后回复的日期/时间。
在我的 HTML 模板中,我可以得到这样的回复数:
{{range .Posts}}
<p>Replies: {{ len .Comments }}</p>
{{ end }}
...但我似乎无法理解获取 Comments 数组的最后一个元素的日期。我知道您可以使用 index 关键字和值 '0' 获取第一个元素,但我不能在模板中使用 (len .Comments -1)获取最后一个元素,因为 '-' 是禁止字符。我可能会创建第二个函数,让我的 cmets 按 SQLite 数据库中的降序排序,但我想知道是否有一种简单的方法来处理 Go 模板中的索引。
谢谢。
【问题讨论】:
标签: go go-templates