英文:
Fastest way to create string of the same character in Go
问题
我想知道创建一个由相同字符的n
个实例组成的字符串的最快方法是什么。我可以想象几种方法,有些天真,有些不太天真:
字符串拼接(非常天真)
func nchars(b byte, n int) string {
s := ""
c := string([]byte{b})
for i := 0; i < n; i++ {
s += c
}
return s
}
字节切片
func nchars(b byte, n int) string {
s := make([]byte, n)
for i := 0; i < n; i++ {
s[i] = b
}
return string(s)
}
英文:
I'm wondering what the fastest way would be to create a string of n
instances of the same character. I could imagine a few approaches, some naive and some less so:
String concatenation (very naive)
func nchars(b byte, n int) string {
s := ""
c := string([]byte{b})
for i := 0; i < n; i++ {
s += c
}
return s
}
Byte slice
func nchars(b byte, n int) string {
s := make([]byte, n)
for i := 0; i < n; i++ {
s[i] = b
}
return string(s)
}
答案1
得分: 8
字节切片的方法至少在strings.Repeat
中被选择:请参考它的源代码:
b := make([]byte, len(s)*count)
bp := 0
for i := 0; i < count; i++ {
bp += copy(b[bp:], s)
}
return string(b)
所以我会选择你的第二个选择。
英文:
The byte slice approach is at least the one chosen in strings.Repeat
: see its source:
b := make([]byte, len(s)*count)
bp := 0
for i := 0; i < count; i++ {
bp += copy(b[bp:], s)
}
return string(b)
So I would go with your second choice.
答案2
得分: 4
res1 := strings.Repeat(str1, 4) 的中文翻译是:res1 := strings.Repeat(str1, 4)。
英文:
res1 := strings.Repeat(str1, 4)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论