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

Go语言新手求教:如何向HTML模板传递多个变量?

你的实现是正确的!模板访问方法看这里

嘿,作为Go语言新手,你的这个实现思路完全没问题!先给你吃个定心丸:你定义的Variables结构体、给PageVars赋值的方式,还有调用tpl.Execute(w, PageVars)传递模板数据的代码都是正确的——只要ulist和check确实是[]string类型,那后端这块就没毛病。

接下来重点说怎么在HTML模板里访问这些变量:Go的模板系统用**点语法(.)**来访问传入的顶层变量,针对你这种切片类型的字段,通常需要结合range来遍历输出,下面给你具体例子:

1. 遍历UserNames切片

比如要把用户名做成一个无序列表:

<h3>用户列表</h3>
<ul>
    {{range .UserNames}}
        <li>{{.}}</li> <!-- 这里的`.`代表当前遍历到的UserNames元素 -->
    {{end}}
</ul>

2. 遍历Checks切片

如果要把检查项做成复选框:

<h3>检查项</h3>
<div>
    {{range .Checks}}
        <label>
            <input type="checkbox" checked> {{.}}
        </label>
    {{end}}
</div>

3. 注意模板的作用域

如果你在range循环里还想访问顶层的其他变量(比如同时用UserNames和Checks),需要用$来指代顶层上下文,比如:

{{range .UserNames}}
    <li>{{.}} - 对应的检查项数量:{{len $.Checks}}</li>
{{end}}

完整模板示例

给你一个可以直接用的完整模板参考:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Go模板示例</title>
</head>
<body>
    <div class="container">
        <h2>用户名单</h2>
        <ul>
            {{range .UserNames}}
                <li>{{.}}</li>
            {{else}} <!-- 如果UserNames是空切片,显示提示 -->
                <li>暂无用户</li>
            {{end}}
        </ul>

        <h2>检查清单</h2>
        <div class="check-group">
            {{range .Checks}}
                <label class="check-item">
                    <input type="checkbox" checked> {{.}}
                </label>
            {{else}}
                <p>暂无检查项</p>
            {{end}}
        </div>
    </div>
</body>
</html>

最后再确认下:你的后端代码完全正确,只要按照上面的模板语法来写,就能顺利渲染出你想要的内容啦!

内容的提问来源于stack exchange,提问作者Casey Cao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:56