为了账号安全,请及时绑定邮箱和手机立即绑定

无法在 html 中显示结构切片

无法在 html 中显示结构切片

Go
largeQ 2022-04-26 19:51:24
我正在开发一个需要我检索数据并将其显示在 html 上的项目。数据被存储并作为结构切片传递给 html。数据由不同的字段组成(例如名称、温度、湿度......)数据检索部分正在工作(我通过打印出来并在我的 html 上显示 Go 切片来确认)。但是,我想要实现的是根据字段在表中正确显示数据。我附上了我的代码,没有任何输出。我找不到错误。请帮我解决一下这个。谢谢*PS 所有名称/标签拼写正确。这是代码:<div style="overflow:auto;">        {{if .}}        <table class="table table-striped">                <thead>                  <tr style="text-align: center;">                    <th scope="col">Time</th>                    <th scope="col">Name</th>                    <th scope="col">Temperature</th>                    <th scope="col">Humidity</th>                    <th scope="col">Ambient</th>                    <th scope="col">Red</th>                    <th scope="col">Green</th>                    <th scope="col">Blue</th>                  </tr>                </thead>                <tbody>        {{range .}}        <tr style="text-align: center;">          <td>{{.time_added}}</td>          <td>{{.name}}</td>          <td>{{.temperature }}</td>          <td>{{.humidity }}</td>          <td>{{.ambient }}</td>          <td>{{.red }}</td>          <td>{{.green}}</td>          <td>{{.blue}}</td>        </tr>        {{end}}    </tbody>  </table>    {{else}}        <h1 style="font-size: 3vh;margin-top:10vh;">No data available</h1>    {{end}}  </div>
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

最有可能的问题是您使用小写名称引用结构的字段。在 Go 中,小写是私有的,因此模板引擎无法看到它们。


这是一个简单的工作示例:


包主


import (

    `html/template`

    `os`

)


var T = template.Must(template.New(``).Parse(`

        {{if .}}

        <table class="table table-striped">

                <thead>

                  <tr style="text-align: center;">

                    <th scope="col">Time</th>

                    <th scope="col">Name</th>

                  </tr>

                </thead>

                <tbody>


        {{range .}}

                <tr style="text-align: center;">

                  <td>{{.Time_Added}}</td>

                  <td>{{.Name}}</td>

                </tr>

                {{end}}

            </tbody>

          </table>

    {{else}}

        <h1 style="font-size: 3vh;margin-top:10vh;">No data available</h1>

    {{end}}

`))


type S struct {

    Time_Added string

    Name string

}


func main() {

    data := []*S{

        &S{"today","fred"}, &S{"yesterday","joe"},

    }

    if err := T.Execute(os.Stdout, data); nil!=err {

        panic(err)

    }

}

如果您更改为.time_addedor .name,您将收到错误消息。因此,请务必检查来自T.Execute.


查看完整回答
反对 回复 2022-04-26
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号