如何检查一行或字符串是否包含要在 Golang 中模板化的变量?

How to check if a line or string contains, to be templated variables in Golang?

我有如下代码

t, err := template.New("todos").Parse("You have a task named \"{{ .Name}}\" with description: \"{{ .Description}}\"")

在设置 NameDescription 的值之前,我必须检查行 "You have a task named \"{{ .Name}}\" with description: \"{{ .Description}}\"" 中定义的模板变量是什么。该行是用户定义的。所以,我不知道什么是手头的模板变量。

还有不使用 Regex 的其他方法吗?

谢谢

我可能会为此使用正则表达式,但您也可以使用解析结果避免它,如 @Cerise Limón 所说。解决方案可能看起来像这样。

package main

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

func main() {

    t, err := template.New("todos").Parse("You have a task named \"{{ .Name}}\" with description: \"{{ .Description}}\"")
    if err != nil {
        panic(err)
    }
    for _, node := range t.Root.Nodes {
        if (node.Type() == parse.NodeAction) {
            log.Println(node.String())
        }
    }
}