雖然方便,可是使用+=操做符並非在一個循環中往字符串末尾追加字符串最有效的方式,一個有效的方式是準備好一個字符串切片([]string),而後使用strings.Join()函數一次性將全部字符串串聯起來。可是在go中還有一個更好的方法,其原理相似於java中的stringBuilderjava
package main import ( "bytes" "fmt" ) func main() { var buffer bytes.Buffer //Buffer是一個實現了讀寫方法的可變大小的字節緩衝 for { if piece, ok := getNextString(); ok { /* func (b *Buffer) WriteString(s string) (n int, err error) Write將s的內容寫入緩衝中,如必要會增長緩衝容量。返回值n爲len(p),err老是nil。若是緩衝變得太大,Write會採用錯誤值ErrTooLarge引起panic。 */ buffer.WriteString(piece) } else { break } } fmt.Println("拼接後的結果爲-->", buffer.String()) }
經測試,鏈接100萬個字符串,使用buffer消耗的時間約爲77毫秒,使用+=消耗的時間爲.....抱歉,我等了5分鐘結果沒跑出來,減少數量級後,鏈接10萬字符串的時間爲3312毫秒
golang
另外,golang中的字符串輸出是有長度限制的,不知道具體限制有多少,過1000萬長度就不顯示了,過1000億liteIDE崩潰了。。。函數