在html模板golang中的许多结构的切片中访问结构变量

用户名

我正在尝试将包含许多结构的切片发送到html模板。

我有一个“发布”结构

type Post struct {
  threadID int
  subject string
  name string
  text string
  date_posted string
}

我创建了一个类型为Postposts := []Post{}的切片

然后使用我数据库中的行填充此切片,然后在我的模板上执行。

defer latest_threads.Close()
for latest_threads.Next(){
    var threadID int
    var subject string
    var name string
    var text string
    var date_posted string
    latest_threads.Scan(&threadID, &subject, &name, &text, &date_posted) 
    post := Post{
        threadID,
        subject,
        name,
        text,
        date_posted,
    }
    posts = append(posts, post)
}
t, error := template.ParseFiles("thread.html")
if error != nil{
    log.Fatal(error)
}
t.Execute(w, posts)
}

该程序可以编译/运行,但是在查看模板的html输出时

{{.}}
{{range .}}
    <div>{{.threadID}}</div>
    <h3>{{.subject}}</h3>
    <h3>{{.name}}</h3>
    <div>{{.date_posted}}</div>
    <div><p>{{.text}}</p></div>
    <br /><br />
{{end}}

{{.}}输出就好但是在到达第一个{{.threadID}}{{range .}}的HTML停止。

<!DOCTYPE html>
<html>
<head>
    <title> Test </title>
</head>
<body>
    //here is where {{.}} appears just fine, removed for formatting/space saving
    <div>
weberc2

它不是很直观,但是模板(以及诸如JSON这样的编码包)无法访问未导出的数据成员,因此您必须以某种方式导出它们:

选项1

// directly export fields
type Post struct {
    ThreadID int
    Subject, Name, Text, DatePosted string
}

选项2

// expose fields via accessors:
type Post struct {
    threadID int
    subject, name, text, date_posted string
}

func (p *Post) ThreadID()   int    { return p.threadID    }
func (p *Post) Subject()    string { return p.subject     }
func (p *Post) Name()       string { return p.name        }
func (p *Post) Text()       string { return p.text        }
func (p *Post) DatePosted() string { return p.date_posted }

更新模板

(无论您从上面选择了哪个选项,此部分都是必选的)

{{.}}
{{range .}}
    <div>{{.ThreadID}}</div>
    <h3>{{.Subject}}</h3>
    <h3>{{.Name}}</h3>
    <div>{{.DatePosted}}</div>
    <div><p>{{.Text}}</p></div>
    <br /><br />
{{end}}

这应该工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Golang jsonable指向切片中不同结构的指针

来自分类Dev

使用指针指向许多结构并访问结构数据成员

来自分类Dev

Golang-嵌套结构中的切片

来自分类Dev

从结构中的嵌入式切片访问值

来自分类Dev

如何从结构中的预定义“范围”访问切片?

来自分类Dev

如何使用我的结构显示切片中的表格

来自分类Dev

如何使用索引访问切片中的元素,该索引由golang中的引用传递

来自分类Dev

如何在SWIG中访问声明的模板结构变量?

来自分类Dev

Golang:结构切片之间的类型转换

来自分类Dev

转到模板以连接切片中的查询

来自分类Dev

访问结构中的结构

来自分类Dev

访问结构中的结构

来自分类Dev

在golang html模板中访问{{range。}}范围之外的struct变量

来自分类Dev

如何从Golang中的结构访问特定字段

来自分类Dev

结构中的字符串切片(在Rust中)

来自分类Dev

具有许多结构的列表,这些结构被认为只有一个成员

来自分类Dev

转到-在结构中附加到切片

来自分类Dev

切片在结构中的初始化

来自分类Dev

切片节点结构中的未定义属性

来自分类Dev

如何在Go中循环遍历结构切片?

来自分类Dev

在C中的函数外部访问结构变量

来自分类Dev

类中的访问结构对象变量-C ++

来自分类Dev

从Conway的生活中访问结构变量

来自分类Dev

C 结构变量访问

来自分类Dev

结构中的C访问结构

来自分类Dev

如何仅将变量(而不是结构成员)传递到text / html模板中。高朗

来自分类Dev

模板中的结构数组

来自分类Dev

如何在Laravel中过滤多对多结构

来自分类Dev

C ++多结构向量错误