go - 用 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那样简单的方法来避免这个问题。因此,我已经关闭了这个问题,没有任何其他问题。
解决方案
推荐阅读
- python - 无法覆盖在 Django 的 admin/auth 和 admin/widgets 中找到的模板
- python - 二维输入数组的 Keras 标准化
- debugging - 找出 GDB 进程出现段错误的原因
- docker - 无法使用 Flask 和 Docker 卷写入文件
- vue.js - 有没有办法让循环在 Vue3 中创建对象?
- python - 如何扩展 ln(x) 图的非对数 x 轴
- pytorch - 为什么我总是得到与 pytorch 中的 CNN 中的结果相同的值?
- batch-file - 使用批处理文件插入密码
- cassandra - How to find the first host contacted by cassandra driver during connection?
- function - 单元格包含一些单词但不包含其他单词