You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言向模板传递对象数组失败,请求技术帮助

问题解决:Go模板无法渲染对象数组

核心原因

Go的模板引擎只能访问导出的字段(即字段名首字母大写),如果结构体字段是小写开头,模板会无法读取该字段的值;同时如果执行模板时未捕获错误,会导致问题被隐藏。

解决方案

  1. 修正结构体字段为导出类型
    将folder结构体的字段名改为首字母大写,确保模板可以访问:
// 定义带导出字段的结构体
type folder struct {
    FolderName string // 首字母大写,允许模板访问
    Path string
}
  1. 添加模板执行错误检查
    执行模板时捕获错误,避免出错却无法定位问题:
foldersVar := []folder{
    folder{FolderName: "OP10", Path: "C:op10"},
    folder{FolderName: "OP14", Path: "C:op14"},
}

// 执行模板并检查错误
err := _template.Execute(&body, struct {
    Test    string
    Folders []folder
}{
    Test:    "Prueba",
    Folders: foldersVar,
})
if err != nil {
    log.Printf("模板执行失败: %v", err)
    return
}

err = smtp.SendMail(hostAndport, auth, from, to, body.Bytes())
  1. 确认模板语法有效性
    你的模板代码语法本身没有问题,只要结构体字段完成导出修改,{{ range .Folders }}就能正常遍历数组,渲染每个元素的FolderName值。

验证效果

修改完成后,模板会正确渲染出两个<li>元素,分别显示OP10和OP14。

内容的提问来源于stack exchange,提问作者Saul Espinoza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:25:17