如何在golang中将变量添加到字符串变量中

53

我正在尝试在Golang中向一个变量字符串添加一个值,但不想使用printf,因为我正在使用revel框架,而且这是为Web环境而非控制台做的。以下是代码案例:

data := 14
response := `Variable string content`

所以我无法在变量响应内获取变量数据,例如:

response := `Variable string 14 content`

有什么想法吗?

4个回答

98

为什么不使用fmt.Sprintf

data := 14
response := fmt.Sprintf("Variable string %d content", data)

10

我认为已经有了最佳实践的答案。只是想基于@ 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() 将整数转换为字符串,以便能够与其他字符串连接。

示例: https://play.golang.org/p/VnJBrxKBiGm


6
你可以使用 text/template 库:
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)
}

4
如果你想要将字符串保存在变量中而不是打印出来,可以尝试这样做:
data := 14
response := "Variable string" + data + "content"

13
data 是一个 整数,你不能直接在 字符串 上进行如此的插入。否则你会遇到以下错误:invalid operation: "Variable string" + data (mismatched types string and int) - omotto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接