Go語言基礎之2 字串詳解

2022-05-19 17:02:55 字數 2520 閱讀 9376

1.字串底層就是乙個byte陣列,所以可以和byte型別互相轉換;(字串可以存文字,也可以存二進位制,因為其本來就是乙個位元組流)

2.字串之中的字元是不能修改的,那怎麼修改呢(待解決(練習題中練習1有解決**換為位元組陣列進行修改)))?

示例如下:

我們可以發現已經飄紅了,並有英文提示不能修改字串中的字元。

說明go語言中字串是乙個唯讀的型別,並不能直接修改。

3.字串是由byte位元組組成,所以字串的長度是byte位元組的長度

示例見示例1-1

4. rune型別用來表示utf8字元,乙個rune字元由1個或多個byte組成

補充:1) 字元與位元組關係?

答:如果是英文本元,1個字元對應1個byte(位元組),如果是中文字元,1個字元對應2個,甚至是3個、4個byte;

2)  utf8編碼?

答:utf8針對最大的好處是,其實可變的,如果是英文本元,其就給1個byte,如果是中文就根據其需要的給定指定的字元個數,這對於網路頻寬的節省是很重要的。

3)  rune型別其實就是int32型別;

例項1-1

package main

import (

"fmt")

func main()

執行結果:

解釋:1) 輸出的就是ascii碼(字元,不論是英文還是中文在底層儲存的都是乙個整數ascii碼),97對應的就是a;

2) 由例項看到乙個"漢"字由三個位元組組成,對應的ascii碼為230 177 137;

3) str字串的長度為9,因為底層儲存的是位元組,可以看到輸出9個位元組,所以長度為9,而不是表面我們數的5個(字元是5個);

4) chars count:5 表示str字元的長度為5(我們需要將字串(預設是ascii編碼)轉換為rune型別進行計算)

5)chars =[97 98 99 27721 23376]:表示的是str字串各個字元對應在底層的utf8編碼

練習1:寫乙個程式,對英文本串進行逆序

方法1:複雜寫法

package main

import (

"fmt")

func main()

str = string(bytes) //

將byte陣列轉換為字串

fmt.printf("

reverse string:%s\n

", str)

}

執行結果:

方法2:牛逼寫法

package main

import (

"fmt")

func main()

str = string(bytes) //

將byte陣列轉換為字串

fmt.printf("

reverse string:%s\n

", str)

}

練習2:寫乙個程式,對包含中文的字串進行逆序

package main

import (

"fmt")

func main()

str = string

(bytes)

fmt.printf("

reverse string:%v\n

", str)

}

執行結果如下:

練習3:寫乙個程式,判斷乙個字串是否是回文

回文:例如:98789, 這個數字正讀是98789,倒讀也是98789

package main

import (

"fmt")

func main()

if str == string

(bytes)

else

}

執行結果:

Go語言基礎 實戰 6 字串

1.什麼是字串?在go中字串是byte陣列。可以通過將內容放在 之間的方式來建立乙個字串。如下 s i am string go中的字串符合unicode標準,並以utf 8編碼。2.訪問字串中的位元組 遍歷 因為字串實際上是byte陣列,所以可以通過下標訪問乙個字串的單個位元組,也可以遍歷。如下 ...

Java基礎(2 字串)

public char charat int index 返回字串中第index個字元 public int length 返回字串的長度 public int indexof string str 返回字串中出現 str 的第乙個位置 public int indexof string str i...

2021 03 09 程式語言2 字串

塊 include include class cmystring cmystring cmystring char pdata else cmystring cmystring const cmystring str cmystring cmystring cmystring cmystring ...