如何检查一行或字符串是否包含要在 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}}\"")
在设置 Name
和 Description
的值之前,我必须检查行 "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())
}
}
}
我有如下代码
t, err := template.New("todos").Parse("You have a task named \"{{ .Name}}\" with description: \"{{ .Description}}\"")
在设置 Name
和 Description
的值之前,我必须检查行 "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())
}
}
}