go - 去模板变量检查不符合我的预期

标签 go go-templates

我将一些嵌套结构传递给go html模板。我想检查 slice 是否为空,如果 slice 为空,则打印“无数据”。

我正在使用以下模板代码执行此操作,但我从不打印出空白内容,它只是完成了呈现任何html的操作。我将文本放在值周围,以查看其输出的文本是否为空,但不呈现文本。我以为下面的$ s可能需要其他测试,例如$ s not nil或$ s not“”。我已经尝试过了,但是得到了相同的结果。我注意到,如果我在范围之前打印{{$dr.Swells}},则会得到[]。任何帮助或指示,将不胜感激。

{{ range $d := .DailyHtmlData}}
  <div class="row"><small><br></br></small></div>  

        {{range $dr := $d.Forecast}}
          <div class="row">
          <div class="col col-2 text-left nopadding"><small>{{$dr.Day}}/{{$dr.Month}} {{$dr.Hour}}:00</small></div>
             {{range $s := $dr.Swells}}
               {{if  $s }}
                  <div class="row"><small>
                    <div class="col col-auto text-left nopadding">{{$s.Dir}} {{$s.Height}}ft@{{$s.Period}}Sec |</div> 
                  </small></div>
               {{else}}
                  <div class="row"><small>
                    <div>No Data.</div>
                  </small></div>
             {{end}}
            {{end}}
        <div class="col text-right nopadding"><small>Wind:{{$dr.Winddir}}:{{$dr.Windspd}}mph Gusts:{{$dr.Windgus}}</small></div>
       </div>
        {{end}}
   {{end}}

最佳答案

当 slice 为空或为零时,使用{{range pipeline}} T1 {{else}} T0 {{end}}形式打印内容。

         {{range $s := $dr.Swells}}
              <div class="row"><small>
                <div class="col col-auto text-left nopadding">{{$s.Dir}} {{$s.Height}}ft@{{$s.Period}}Sec |</div> 
              </small></div>
         {{else}}
              <div class="row"><small>
                <div>No Data.</div>
              </small></div>
         {{end}}

关于go - 去模板变量检查不符合我的预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58648761/

相关文章:

go - Kubernetes Helm Chart If 条件检查

pointers - 取消引用结构指针是否复制结构?

go - 如何在同一循环内向 channel 发送值或从 channel 接收值?

go - 如何解释 cpu 分析图

amazon-web-services - k8s如何 secret 更新特定值

go - 数组可以在 Go 中有方法吗?

go - text/template.Templates 和 html/template.Templates 之间的区别

go - 在Helm模板中解压Go map 值

html - 如何在go模板中传入map "created on the way"

golang template.JS 到字符串和 template.HTML 到字符串