GO語言中的字符串

1.簡介

字符串是不可變字節(byte)序列,其本身是一個複雜的結構。默認以UTF-8編碼存儲Unicode字符,內置函數len()返回字節數組長度。字符串默認值不是nil,而是""。

func main(){
	strChinese :="我愛我的祖國"
	strEnglish := "I love my country"
	fmt.Printf("strChinese len:%d,strEnglish len:%d\n",len(strChinese),len(strEnglish))
	var s string
	fmt.Println("" == s)
}

輸出

strChinese len:18,strEnglish len:17

true

utf-8下一個漢字等於三個字符,所以漢字字符串的長度爲8*3。

2.使用"`"字符定義不做轉義的原始字符串,支持跨行。

func main(){
ss:= `line\r\n,
line2`
fmt.Println(ss)
}

會按原樣輸出

3.遍歷字符串

使用for遍歷字符串時,分byte和rune兩種方式。

func main(){
	strChinese :="中國"
	for i:=0;i<len(strChinese) ;i++  {
		fmt.Printf("%d:[%c]\n",i,strChinese[i])
	}
	for i,c:=range strChinese{
		fmt.Printf("%d:[%c]\n",i,c)
	}
}

輸出:

0:[ä]
1:[¸]
2:[­]
3:[å]
4:[ ]

5:[½]


0:[中]
3:[國]


4.獲取字符串長度

當字符串時單字節時,可以使用len()函數獲取;當爲多字節時,可以使用 utf8 中的 RuneCountInString獲取字符串長度,也可以將字符串轉換爲rune切片,然後通過 len 函數獲取長度。

func main(){
	strChinese :="中國"
	fmt.Println(utf8.RuneCountInString(strChinese))
	runes:=[]rune(strChinese)
	fmt.Println(len(runes))
}

以上都輸出2

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章