在 Go 中,astring它是一种原始类型,这意味着它只读,每次操作都会创建一个新的字符串。0 e1 s& ?/ ^5 Y! t2 L
因此,如果我想在不知道结果字符串长度的情况下多次连接字符串,最好的方法是什么?/ u" v- b! X" }" z# k- U
天真的方法是:% v z5 x+ N$ ?
[code]var s stringfor i := 0; i 但这似乎不是很有效。; D! k) `8 y' Z; z7 z( e: I; N
- C& A5 E, ^: n$ Z O) h% V 解决方案: 2 L& g/ ^$ d, U/ w I
新方法:从 Go 1.从10 开始,有一种strings.Builder类型) a4 b. d( c/ H( y+ Q
旧方式:使用bytes包。它有一个Buffer实现io.Writer.2 V* p0 ?& a! j0 Z0 N- \# Z/ m
[code]package mainimport "bytes" "fmt")func main() var buffer bytes.Buffer for i := 0; i 这是在 O(n) 时间内完成。