golang template模版如何判断变量是否存在/指针是否为空

CodingCode · · 4904 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

golang template模版如何判断变量是否存在/指针是否为空

也就是语法{{if .Var}}的含义。
其含义是变量Var是否为真值,判断逻辑根据变量的类型,和golang语言本身判断变量是否为真的逻辑是一样的。

  • 数字型:值不等于零
  • 字符串:不是空串
  • 指针类型:不为空
  • 布尔类型:为True值

比较常用的是指针类型是否为空(对于其他基本类型来说,可以通过简单的比较运算来完成),语义上说就是属性是否存在,举个例子来说:

package main

import (
    "os"
    "log"
    "text/template"
)

type Address struct {
    City   string
    Street string
    Apt    int
}

func main() {
    templateText := `
{{if .Address}}
Apt is {{.Address.Apt}}.
{{else}}
Apt is NOT set.
{{end}}
`
    t := template.Must(template.New("anyname").Parse(templateText))
 
    templateVar := struct {
        Name    string
        Address * Address
    } {
        Name:   "Tom",
        Address: &Address {
            City: "Beijing",
            Street: "Changanjie",
            Apt: 0,
          },
    }
    err := t.Execute(os.Stdout, templateVar)
    if err != nil {
        log.Println("Executing template:", err)
    }

    templateVar = struct {
        Name    string
        Address * Address
    } {
        Name:   "Tom",
    }
    err = t.Execute(os.Stdout, templateVar)
    if err != nil {
        log.Println("Executing template:", err)
    }
}

运行结果就是:

Apt is 0.
Apt is NOT set.

第一个变量设置了Address,而第二个变量的Address为nil,所以就是通过变量{{.Var}}的语法来判定。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:CodingCode

查看原文:golang template模版如何判断变量是否存在/指针是否为空

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4904 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传