是否存在Go字符串模板例如javascript es6字符串模板文字?

问题描述

我正在寻找一种在Go中执行JavaScript ES6字符串模板文字之类的方法。例如。 使用javascript

let name = 'espeniel';
let test = `Hi ${name}!`
console.log(test);

结果

您好! 即使在Go中,也没有办法在这样的句子中分配变量吗?

解决方法

不完全相同,但是标准库中的text/templatehtml/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!

查看相关内容:Format a Go string without printing?