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

Go Template中如何判断字符串包含另一字符串或以其结尾

标准库text/template/html/template的内置函数集没有提供判断子串包含、后缀匹配的原生方法,你提到的eq仅支持完整值的相等判断,要实现这类字符串匹配能力,通过FuncMap注入标准库函数是最简便的标准方案。

具体实现

你不需要自己编写字符串匹配逻辑,直接把Go标准库strings包下的现成方法注入模板作用域即可:

import (
    "strings"
    "text/template"
)

// 注意:自定义函数注册必须在模板解析操作之前完成,否则函数无法被识别
tpl := template.Must(
    template.New("demo").
        Funcs(template.FuncMap{
            "contains":  strings.Contains,  // 用于判断字符串是否包含指定子串
            "hasSuffix": strings.HasSuffix, // 用于判断字符串是否以指定子串为后缀
            "hasPrefix": strings.HasPrefix, // 可顺便注入前缀判断方法,按需添加即可
        }).
        Parse(`你的模板内容`), // 替换为实际的模板解析逻辑,比如ParseFiles加载模板文件
)

模板调用示例

注入完成后就可以直接在模板中使用这些函数:

  • 判断字符串包含
{{if contains .Username "admin"}}
  <span>管理员标识</span>
{{end}}
  • 判断字符串后缀
{{if hasSuffix .FileName ".pdf"}}
  <a href="{{.FileUrl}}">下载PDF文件</a>
{{end}}

如果你使用的是Gin、Echo这类Web框架封装的模板渲染组件,大多已经默认注入了这类常用字符串处理函数,不需要手动注册就可以直接调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:06:29