duanjiong2021 2014-07-31 23:09
浏览 33

Golang模板忽略是否匹配

I am trying to convert a golang template, and allow ignoring if the match is not found. Is that possible?

Playground

package main

import (
"bytes"
"fmt"
"text/template"
)
type Person struct {
Name string
Age  int
}
type Info struct {
Name string
Id   int
}

func main() {
msg := "Hello {{ .Id }} With name {{ .Name }}"
p := Person{Name: "John", Age: 24}
i := Info{Name: "none", Id: 5}

t := template.New("My template")
t, _ = t.Parse(msg)

buf := new(bytes.Buffer)
t.Execute(buf, p)
fmt.Println(buf.String())

buf = new(bytes.Buffer)
t.Execute(buf, i)
fmt.Println(buf.String())
}

I would like this to print

Hello {{ .Id }} with name John Hello 5 With name none

  • 写回答

2条回答 默认 最新

  • duanqiangwu9332 2014-08-01 00:01
    关注

    If you want it to print name only when it's not an empty string:

    "Hello {{ .Id }} With name {{ if .Name }}{{ .Name }}{{ end }}"
    

    Else, if you want to it print something else:

    "Hello {{ .Id }} With name {{ if .Name }}{{ .Name }}{{ else }}none!{{ end }}"
    

    Playground - also see the comparison operators for html/template and text/template.

    评论

报告相同问题?

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据