是否存在像 javascript es6 字符串模板文字那样的 Go 字符串模板?

moo*_*jun 2 javascript templates go string-literals ecmascript-6

我正在寻找一种方法来在 Go 中执行诸如 JavaScript ES6 字符串模板文字之类的操作。例如。在 JavaScript 中

let name = 'espeniel';
let test = `Hi ${name}!`
console.log(test);
Run Code Online (Sandbox Code Playgroud)

结果

嗨埃佩尼尔! 即使在 Go 中,也没有办法在这样的句子中分配变量吗?

icz*_*cza 6

不完全相同,但是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)
}
Run Code Online (Sandbox Code Playgroud)

哪个输出(在Go Playground上尝试):

Hi espeniel, you are 21!
Run Code Online (Sandbox Code Playgroud)

请参阅相关内容:格式化 Go 字符串而不打印?