登录
首页 >  Golang >  Go问答

如何在 Golang 模板中获取结构体数组的最后一个元素

来源:stackoverflow

时间:2024-02-12 19:00:27 115浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何在 Golang 模板中获取结构体数组的最后一个元素》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我正在为一个学校项目构建一个简单的 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}}

    

Replies: {{ len .Comments }}

{{ end }}

...但我似乎无法理解获取 comments 数组最后一个元素的日期。我知道您可以使用 index 关键字和值“0”获取第一个元素,但我无法在模板内使用 (len .comments -1) 来获取最后一个元素,因为“-”是禁止字符。我可能只会创建第二个函数来从 sqlite 数据库中按降序对我的评论进行排序,但我想知道是否有一种简单的方法来使用 go 模板中的索引。

谢谢。


正确答案


没有一种干净的方法可以使用 go 模板执行此操作,但是这是一种解决方法 here。更简单的解决方法是在将结构传递给模板器之前将最后一项添加到结构中。您正在做的是将复杂的逻辑从模板中移出(无论如何,模板并不是为了执行此操作而设计的)并移至 go 代码中。

type post struct {
    ....
    comments   []comment
    lastcomment comment
}

然后在您的模板中,只需执行

{{ .LastComment }}

理论要掌握,实操不能落!以上关于《如何在 Golang 模板中获取结构体数组的最后一个元素》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>