我想知道创建一个具有相同字符的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)
}
答案 0 :(得分:7)
字节切片方法至少是strings.Repeat
中选择的方法:参见its source:
b := make([]byte, len(s)*count)
bp := 0
for i := 0; i < count; i++ {
bp += copy(b[bp:], s)
}
return string(b)
所以我会选择你的第二选择。