字串拼接
//方法一:
hello := "hello"
world := "world"
fmt.Println("方法一:"+hello+"--"+world)
//方法二:fmt.Sprintf()根據format引數生成格式化的字串並返回該字串。
var str_result string
str1 := "hello"
str2 := "world"
str_result = fmt.Sprintf("%s--%s",str1,str2)
fmt.Println("方法二:"+str_result)
//方法三:將一系列字串連線為一個字串,之間用sep來分隔。
var str_result11 string
str11 := "hello"
str21:= "world"
content:= []string{str11,str21}
str_result11 = strings.Join(content,"--")
fmt.Println("方法三:"+str_result11)
//方法四:buffer.WriteString()Write將s的內容寫入緩衝中,如必要會增加緩衝容量。返回值n為len(p),err總是nil。如果緩衝變得太大,Write會採用錯誤值ErrTooLarge引發panic。
var buffer bytes.Buffer
//buffer.Grow(1000000000)1和1 10個0還沒溢位
buffer.WriteString("hello")
buffer.WriteString("--")
buffer.WriteString("world")
fmt.Println("方法四:" + buffer.String())
//方法一:golang 裡面的字串都是不可變的,每次運算都會產生一個新的字串,所以會產生 很多臨時的無用的字串,不僅沒有用,還會給 gc 帶來額外的負擔,所以效能比較差
//方法二:內部使用 []byte 實現,不像直接運算子這種會產生很多臨時的字串,但是內部的邏輯比較複雜,有很多額外的判斷,還用到了 interface,所以效能也不是很好
//方法三:join會先根據字串陣列的內容,計算出一個拼接之後的長度,然後申請對應大小的記憶體,一個一個字串填入,在已有一個數組的情況下,這種效率會很高,但是本來沒有,去構造這個資料的代價也不小
//方法四:這個比較理想,可以當成可變字元使用,對記憶體的增長也有優化,如果能預估字串的長度,還可以用 buffer.Grow() 介面來設定 capacity