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

Go Gin框架:如何将指针数组的值传递至模板并显示

问题解答

Gin 底层依赖 Go 标准库的 html/template,模板渲染时会自动解引用指针,不需要在 gin.H 里额外处理就能在 HTML 中展示实际值。以下是具体实现方式:

1. 直接在模板中访问指针字段

假设 prices 是 []*Price 类型(Price 包含 Amount、Currency 等字段),在 HTML 模板里直接按值类型的方式访问字段即可,模板引擎会自动完成指针解引用:

<h1>{{.title}}</h1>
<div class="prices">
    {{range .data}}
        <p>价格:{{.Amount}} {{.Currency}}</p>
    {{end}}
</div>

2. 手动在后端转换为值类型数组(可选)

如果需要在后端提前处理指针数据(比如过滤空指针、修改字段值),可以手动遍历指针数组,将其转换为值类型数组后再传入模板:

func initRoutes() {
    router.GET("/", func(c *gin.Context) {
        prices, err := client.NewListPricesService().Do(context.Background())
        if err != nil {
            fmt.Print(err)
        }

        // 转换指针数组为值类型数组,同时处理空指针
        var valuePrices []Price
        for _, p := range prices {
            if p != nil {
                valuePrices = append(valuePrices, *p)
            }
        }

        c.HTML(http.StatusOK, "index.html", gin.H{
            "title": "aa website",
            "data":  valuePrices, // 传入值类型数组
        })
    })
}

注意事项

  • 若指针数组中存在 nil 指针,直接访问字段会导致模板渲染报错,建议在后端过滤空指针,或在模板中添加非空判断:
{{range .data}}
    {{if .}}
        <p>价格:{{.Amount}} {{.Currency}}</p>
    {{else}}
        <p>无效价格数据</p>
    {{end}}
{{end}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:05:16