如何在Go模板中以单变量传递并访问结构体及结构体切片
用单个变量传递Topic与Replay切片到Go模板的方案
1. 定义统一的模板数据结构体
要通过单个变量传递两种数据,只需把Topic和Replay切片封装到一个新的结构体中:
type TemplateData struct { CurrentTopic Topic // 单个Topic实例 Replays []Replay // Replay类型的切片 }
2. 在Go代码中传递数据
实例化这个结构体,填充好Topic和Replay切片的数据,再将其作为唯一变量传入模板:
// 假设已获取到topic实例和replays切片 templateData := TemplateData{ CurrentTopic: topic, Replays: replays, } // 执行模板时传入templateData err := tmpl.Execute(w, templateData) if err != nil { // 错误处理逻辑 }
3. 在模板中访问数据
模板里通过根变量的字段直接访问对应数据:
- 访问
Topic的字段:
<h1>{{.CurrentTopic.Title}}</h1> <p>作者:{{.CurrentTopic.Author}}</p> <div class="topic-body">{{.CurrentTopic.Body}}</div>
- 遍历
Replay切片并访问每个元素的字段:
<h3>回复列表</h3> {{range .Replays}} <div class="reply-item"> <p>回复作者:{{.Author}}</p> <p>{{.Body}}</p> </div> {{end}}
内容的提问来源于stack exchange,提问作者mirko sailorm
相关产品推荐
相关产品推荐

