使用Golang简化字符串中的变量替换

时间:2018-12-30 04:45:55

标签: go substitution

我正在尝试了解 Golang 语言

今天我有一个问题,用Golang替换字符串中的变量

我已经搜索了如何在golang中解决它,并发现了 2种方式,例如blog

第一种方式

第一种方法是使用 fmt.Sprintf ,例如(我在Go Playground here上做了一个):

msg := fmt.Sprintf("Hello %s, you have %d new messages", "Alice", 15)
fmt.Println(msg)

第二种方式

第二个是使用 text/template 包,例如(我在Go Playground here上做了一个):

msg := "Hi {{.DisplayName}}, you have {{ .NumMessages }} new messages"

data := map[string]interface{}{
    "DisplayName": "Bob",
    "NumMessages": 15,
}

tmpl, err := template.New("msg").Parse(msg)
buf := &bytes.Buffer{}
if err = tmpl.Execute(buf, data); err != nil {
    fmt.Println(err)
}
s := buf.String()

fmt.Println(s)

我注意到第一种方法很简单,但它不易阅读,第二种方法非常复杂(也许我们需要创建一个实用函数)

我使用过 JavaScript ,发现它非常简单:

displayName = "Trudy"
numMessages = 15
msg = `Hello ${displayName}, you have ${numMessages} new messages`
console.log(msg)

有什么方法可以在Golang中简化此操作吗?因为我刚刚学习过这种语言,所以我希望有很多想法可以改善我的体验。

编辑以重新打开问题

我的希望是Golang中是否有类似的方法,例如JavaScript,它与上述方法也有所不同,但涉及到我提到的问题(它不应将占位符用作变量的第一种方法,不易阅读,并且其次也不复杂)

编辑以关闭此问题

经过一段时间的搜索,我认为Golang没有像JavaScript一样避免这种问题的简单方法。因此,我已关闭此问题,没有其他任何问题。

0 个答案:

没有答案