我是Go的新手。我找不到任何官方文档,展示如何将多个字符串合并为一个新字符串。
我期待的是:
输入:"key:"
,"value"
,", key2:"
,100
输出:"Key:value, key2:100"
如果可能,我想使用+
来合并Java和Swift中的字符串。
答案 0 :(得分:51)
我喜欢使用fmt的Sprintf
方法来处理这类事情。它与Go或C中的普通Printf
一样,只返回一个字符串。这是一个例子;
output := fmt.Sprintf("%s%s%s%d", "key:", "value", ", key2:", 100)
的文档
答案 1 :(得分:17)
你可以使用strings.Join,这几乎比fmt.Sprintf快3倍。但它的可读性较差。
output := strings.Join([]string{"key:", "value", ", key2:", strconv.Itoa(100)}, "")
请参阅https://play.golang.org/p/AqiLz3oRVq
strings.Join vs fmt.Sprintf
BenchmarkFmt-4 2000000 685 ns/op
BenchmarkJoins-4 5000000 244 ns/op
<强>缓冲器强>
如果你需要合并很多字符串,我会考虑使用缓冲区而不是上面提到的那些解决方案。
答案 2 :(得分:2)
您可以简单地执行以下操作:
import (
"fmt"
"strconv"
)
func main() {
result:="str1"+"str2"+strconv.Itoa(123)+"str3"+strconv.Itoa(12)
fmt.Println(result)
}
使用fmt.Sprintf()
var s1="abc"
var s2="def"
var num =100
ans:=fmt.Sprintf("%s%d%s", s1,num,s2);
fmt.Println(ans);
答案 3 :(得分:0)
另一种选择:
package main
import "fmt"
func main() {
s := fmt.Sprint("key:", "value", ", key2:", 100)
println(s)
}