今天在刷算法題的時候遇到了一個小問題,原問題是将字元串中的空格用其他字元進行替換,我選擇了在不建立新空間的前提下原地修改實作,送出的時候發現在替換字元的時候出錯。去了解了一番發現:
- string類型是引用類型,它由指針和位元組數組兩部分組成。整個字元串底層其實就相當于是一個位元組數組[]byte,是以一些對數組、切片的操作,比如說截取
、按索引取值str[2:]
都可以在字元串中應用。但是對于append操作,字元串是通過str[6]
來實作的或者+
實作。strings.join
- 字元串相當于是長度固定的數組,其值不可變的,在對其進行修改的時候需要先轉換成
類型,或者[]byte
類型,修改完之後再轉換為string類型。[]rune
- byte相當于是uint8,即8位無符号數,是計算機存儲的基本機關(最小機關是bit)。rune相當于是int32,其表示的範圍比byte要寬泛的多,它用于區分字元(字元是資訊表示機關比如a,b就是不同的字元,在不同的編碼模式下其所需要的存儲空間不一樣)