首页 > 解决方案 > 用 Golang 简化字符串中的变量替换

问题描述

我正在尝试学习Golang语言

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

我已经搜索了如何在 golang 中解决它,并找到了2 种方法作为这个博客

第一种方式

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

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

第二种方式

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

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那样简单的方法来避免这个问题。因此,我已经关闭了这个问题,没有任何其他问题。

标签: gosubstitution

解决方案


推荐阅读