在Go中是否有一种简单的方法来格式化字符串而不打印字符串?

我可以:

bar := "bar"
fmt.Printf("foo: %s", bar)

但是我希望返回格式化的字符串,而不是打印出来,这样我就可以进一步操作它。

我还可以这样做:

s := "foo: " + bar

但是,当格式字符串很复杂时,就很难读取,当一个或多个部分不是字符串,必须先转换时,就会很麻烦,比如

i := 25
s := "foo: " + strconv.Itoa(i)

有更简单的方法吗?


当前回答

fmt。SprintF函数返回一个字符串,您可以按照fmt的方式格式化字符串。PrintF

其他回答

在本例中,您需要使用Sprintf()来格式化字符串。

func Sprintf(格式字符串,…interface{})字符串

Sprintf根据格式说明符格式化并返回结果字符串。

S:= fmt。Sprintf(“早上好,这里是%s,我从过去%d年就住在这里了”,“John”,20)

你的输出将是:

早上好,我是约翰,我在这里住了20年了。

Sprintf就是您要找的。

例子

fmt.Sprintf("foo: %s", bar)

你也可以在“围棋之旅”的错误示例中看到它的使用。

return fmt.Sprintf("at %v, %s", e.When, e.What)

而不是使用模板。新的,你可以使用新的内置的 模板。模板:

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() {
   bar := "bar"
   println(format("foo: {{.}}", bar))
   i := 25
   println(format("foo: {{.}}", i))
}

fmt。SprintF函数返回一个字符串,您可以按照fmt的方式格式化字符串。PrintF

我来到这个页面专门寻找格式化错误字符串的方法。因此,如果有人需要同样的帮助,则需要使用fmt.Errorf()函数。

方法签名是func Errorf(format string, a…interface{})错误。 它返回格式化的字符串作为满足错误接口的值。

您可以在文档https://golang.org/pkg/fmt/#Errorf中查找更多详细信息。