天天看點

golang中關于字元串的修改(string、rune、byte)

今天在刷算法題的時候遇到了一個小問題,原問題是将字元串中的空格用其他字元進行替換,我選擇了在不建立新空間的前提下原地修改實作,送出的時候發現在替換字元的時候出錯。去了解了一番發現:

  • string類型是引用類型,它由指針和位元組數組兩部分組成。整個字元串底層其實就相當于是一個位元組數組[]byte,是以一些對數組、切片的操作,比如說截取

    str[2:]

    、按索引取值

    str[6]

    都可以在字元串中應用。但是對于append操作,字元串是通過

    +

    來實作的或者

    strings.join

    實作。
  • 字元串相當于是長度固定的數組,其值不可變的,在對其進行修改的時候需要先轉換成

    []byte

    類型,或者

    []rune

    類型,修改完之後再轉換為string類型。
  • byte相當于是uint8,即8位無符号數,是計算機存儲的基本機關(最小機關是bit)。rune相當于是int32,其表示的範圍比byte要寬泛的多,它用于區分字元(字元是資訊表示機關比如a,b就是不同的字元,在不同的編碼模式下其所需要的存儲空間不一樣)