问题描述
我正在寻找一种在Go中执行JavaScript ES6字符串模板文字之类的方法。例如。 使用javascript
let name = 'espeniel';
let test = `Hi ${name}!`
console.log(test);
结果
您好! 即使在Go中,也没有办法在这样的句子中分配变量吗?
解决方法
不完全相同,但是标准库中的text/template
和html/template
软件包非常接近。
区别在于您不能仅通过模板名称使用模板外部定义的Go变量的值,而必须传递要在模板中使用的值。但是您可以传递映射或结构,也可以在模板中引用键或结构字段(按其名称)。
例如:
var params = struct {
Name string
Age int
}{"espeniel",21}
t := template.Must(template.New("").Parse(`Hi {{.Name}},you are {{.Age}}!`))
if err := t.Execute(os.Stdout,params); err != nil {
panic(err)
}
哪个输出(在Go Playground上尝试):
Hi espeniel,you are 21!