Golang 中的字符串忆蚀,有兩種表示方法:
s1 := "hello, world"
s2 := `hello, world.
send using Golang`
Golang 中沒有字符類型(就是 C 中的 char
),字符串都是 rune
類型。Golang 中字符串以 UTF-8 編碼后存儲馋袜,存儲的是字節(jié)男旗。
UTF-8 實(shí)際是上一種變長編碼,一個(gè)字符(一個(gè)中文字或其他語言的文字)可能以 1 個(gè)欣鳖、2 個(gè)或 3 個(gè)字節(jié)來存儲察皇。作為對比,一個(gè) ASCII 字符只需要一個(gè)字節(jié)泽台,當(dāng)然 ASCII 可以表示的字符就比較有限了什荣。
在 Golang 中,字符串的內(nèi)容一但被創(chuàng)建怀酷,是不能被修改的稻爬。如果需要修改字符串,可以將字符串轉(zhuǎn)換為 []byte
或者 []rune
蜕依。需要特別指出的一點(diǎn)是在使用 for ... range
遍歷字符串中的字符時(shí)桅锄,Golang 會自動將 string
轉(zhuǎn)換為 []rune
,然后再遍歷字符串样眠。例如:
s := "hello 世界"
for i, v := range s {
fmt.Printf("%v = %c\n", i, v)
}
輸出:
0 = h
1 = e
2 = l
3 = l
4 = o
5 =
6 = 世
9 = 界
len(s)
返回的是字符串 s
的字節(jié)數(shù)友瘤。