在Go中创建相同字符串的最快方法

时间:2014-08-21 10:37:11

标签: string performance 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)
}

1 个答案:

答案 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)

所以我会选择你的第二选择。