String 如何将多个字符串和int合并为单个字符串
我是围棋的新手。我找不到任何显示如何将多个字符串合并为新字符串的官方文档 我期待的是: 输入:String 如何将多个字符串和int合并为单个字符串,string,go,String,Go,我是围棋的新手。我找不到任何显示如何将多个字符串合并为新字符串的官方文档 我期待的是: 输入:“键:,“值”,,键2:,100 输出:“键:值,键2:100” 如果可能的话,我想使用+来合并Java和Swift中的字符串。我喜欢使用fmt的Sprintf方法来处理这类事情。它的工作原理类似于Go或C中的Printf,只返回字符串。下面是一个例子: output := fmt.Sprintf("%s%s%s%d", "key:", "value&q
“键:
,“值”
,,键2:
,100
输出:“键:值,键2:100”
如果可能的话,我想使用
+
来合并Java和Swift中的字符串。我喜欢使用fmt的Sprintf
方法来处理这类事情。它的工作原理类似于Go或C中的Printf
,只返回字符串。下面是一个例子:
output := fmt.Sprintf("%s%s%s%d", "key:", "value", ", key2:", 100)
你可以使用strings.Join,它比fmt.Sprintf快3倍。但是,它的可读性较差
output := strings.Join([]string{"key:", "value", ", key2:", strconv.Itoa(100)}, "")
看
strings.Join vs fmt.Sprintf
BenchmarkFmt-4 2000000 685 ns/op
BenchmarkJoins-4 5000000 244 ns/op
var s1="abc"
var s2="def"
var num =100
ans:=fmt.Sprintf("%s%d%s", s1,num,s2);
fmt.Println(ans);
缓冲区
如果你需要合并很多字符串,我会考虑使用缓冲区而不是上面提到的解决方案。
你可以简单地做到这一点:
import (
"fmt"
"strconv"
)
func main() {
result:="str1"+"str2"+strconv.Itoa(123)+"str3"+strconv.Itoa(12)
fmt.Println(result)
}
使用fmt.Sprintf()
另一种选择:
package main
import "fmt"
func main() {
s := fmt.Sprint("key:", "value", ", key2:", 100)
println(s)
}
最后一个的可能重复项是整数。我可以用%d吗?@RobertYiJiang是的,我会用它来编辑。我没有意识到我在那里更改了输入的类型。如果您使用strconv.Itoa,那么您也可以将字符串与+@ColinPitrat连接起来,这是因为在运行编译器时出现了一个问题,strings.Join(2或3个元素的连接)使用+,但除此之外,它会创建一个字节片以实现更高效的连接。如果要连接两个以上的元素,我强烈建议使用strings.Join。