我正在尝试在golang中为变量字符串添加一个值,而不使用printf,因为我使用的是revel框架,这是用于web环境而不是控制台,情况就是这样:
data := 14
response := `Variable string content`
所以我无法在变量响应中获取可变数据,比如
response := `Variable string 14 content`
有什么想法吗?
答案 0 :(得分:10)
为什么不使用fmt.Sprintf
?
data := 14
response := fmt.Sprintf("Variable string %d content", data)
答案 1 :(得分:3)
我相信,已被接受的答案已经是最佳实践。就像提供基于@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
}
它使用strconv.Itoa()
将整数转换为字符串,因此可以将其与其余字符串连接起来。
答案 2 :(得分:0)
如果要将字符串保留在变量中而不是打印出来,请尝试以下操作:
data := 14
response := "Variable string" + data + "content"
答案 3 :(得分:0)
您也可以使用os.Expand
:
package main
import (
"fmt"
"os"
)
func main() {
data := 14
response := "Variable string $data content"
response = os.Expand(response, func(s string) string {
switch s {
case "data": return fmt.Sprint(data)
default: return ""
}
})
println(response == "Variable string 14 content")
}