我正在尝试在golang中为变量字符串添加一个值,而不使用printf,因为我使用的是revel框架,这是用于web环境而不是控制台,情况就是这样:
data := 14
response := `Variable string content`
Run Code Online (Sandbox Code Playgroud)
所以我无法在变量响应中获取可变数据,就像这样
response := `Variable string 14 content`
Run Code Online (Sandbox Code Playgroud)
任何的想法?
mu *_*ort 17
为什么不用fmt.Sprintf?
data := 14
response := fmt.Sprintf("Variable string %d content", data)
Run Code Online (Sandbox Code Playgroud)
我相信接受的答案已经是最佳实践之一。就像根据@Ari Pratomo 的回答给出一个替代选项:
package main
import (
"fmt"
"strconv"
)
func main() {
data := 14
response := "Variable string " + strconv.Itoa(data) + " content"
fmt.Println(response) //Output: Variable string 14 content
}
Run Code Online (Sandbox Code Playgroud)
它strconv.Itoa()用于将整数转换为字符串,因此它可以与其余字符串连接。
演示:https : //play.golang.org/p/VnJBrxKBiGm
小智 6
您可以使用文本/模板:
package main
import (
"strings"
"text/template"
)
func format(s string, v interface{}) string {
t, b := new(template.Template), new(strings.Builder)
template.Must(t.Parse(s)).Execute(b, v)
return b.String()
}
func main() {
data := 14
response := format("Variable string {{.}} content", data)
println(response)
}
Run Code Online (Sandbox Code Playgroud)