go - 如何遍历 Go 模板中的列表

标签 go

我有一个函数可以从数据库中检索一堆推文(Tweet 类型)并将它们传递给模板。在模板中,我必须遍历数组并为从数据库中检索到的每条推文打印 message 字段。下面的模板根本不显示任何内容。

如何指示我正在遍历 Tweet 类型的数组,然后为每个数组打印消息?

    func Root(w http.ResponseWriter, r *http.Request) {
      tweets := []*Tweet{}
      t := template.Must(template.New("main").ParseFiles("main.html"))

      err := Orm.Find(&tweets)
      if err != nil {
        fmt.Println("err", err)
        return
      }
      t.ExecuteTemplate(w, "main.html", tweets)
    }

main.html

 {{range .Tweet}}  
      status: {{.message}}
 {{end}}

最佳答案

这里有两个错误。

  1. .Tweet 来自哪里?您为模板引擎 tweets 提供了一个 []*Tweet 作为输入,所以 . 是一个 slice 并且没有 Tweet 字段或键。

  2. .message 不导出,模板中只能使用导出的字段。


最终结果:

{{range .}}
    status: {{.Message}}
{{end}}

记得修改你的推文类型以使用新的字段名称。

关于go - 如何遍历 Go 模板中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219510/

相关文章:

go - 无法将 JSON 解码为结构

Go 服务的部署策略?

go - Conn 在 Go 中随机关闭且没有警告

go - play.golang.org 如何自动管理导入?

docker - 如何避免找不到包 "github.com/golang/protobuf/jsonpb"错误

database - go database/sql - 奇怪的连接和事务行为

node.js - 基本客户端/服务器架构和交互

pointers - 如何在 Go 中使用接收器?

go - golang 中奇怪的 pow 实现

random - crypto/rand read() 的两个返回值在什么情况下有用?