如何遍历Go模板中的列表

Lea*_*cim 4 go

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

如何指示我正在遍历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)
    }
Run Code Online (Sandbox Code Playgroud)

main.html

 {{range .Tweet}}  
      status: {{.message}}
 {{end}}
Run Code Online (Sandbox Code Playgroud)

Ste*_*erg 6

您在这里有两个错误。

  1. 哪里.Tweet来的?您给了模板引擎tweet,[] * Tweet作为输入,因此.是一个切片,没有Tweet字段或键。

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


最终结果:

{{range .}}
    status: {{.Message}}
{{end}}
Run Code Online (Sandbox Code Playgroud)

切记修改您的Tweet类型以使用新的字段名称。