1、單引號括起來的只能是單個字元,但go語言是utf8格式的,所以單個字元長度都為4位元組,且乙個漢字也是單個字元
unsafe.sizeof('c') 結果是4unsafe.sizeof('我') 結果也是4
單個的字元可以用 單個的 rune 型別表示,rune型別等於於uint32,也就是說儲存單個字元的變數,裡面實際儲存的是該字元的unicode編碼
var a='c' fmt.println(a),列印出來的是 99
var a='我' fmt.println(a),列印出來的是 25105
2、字串是
使用雙引號括起來,或反單引號括起來,反單引號(`)
是主鍵區左上角那個,在(~)的下面。單引號不行
a="string" b='string'
可使用(\)轉義
t1 := "\"hello\"" //內容: "hello"
t2 := `"hello"` //內容:和t1一致
t3 := "\u6b22\u8fce" //內容:你好
3、字串支援切片操作,可以看做是乙個切片陣列,陣列下標從0開始
注意:因為對字串直接使用切片時是通過位元組進行索引的,但是非ascii字元在記憶體中可能不是由乙個位元組組成。所以,
s:="sdb我d是一re" 這個字串長度是15,三個漢字佔了9個位元組,該字串陣列下標為0-14
直接使用下標取字元就可能取半個字元。
如果想對字串中字元依次訪問,可以使用range操作符
var va rune
for _, va = range s
s[n]
從字串s中索引位置為n處的原始位元組,返回的是
rnue
型值,可以用 string(s[n])轉換回字串型
s[n:m]
從位置n到位置m-1處取得的字元(位元組)串, 返回的是
string
型值s[n:]
從位置n到位置len(s)-1處取得的字元(位元組)串
s[:m]
從位置0到位置m-1處取得的字元(位元組)串
len(s)
字串s中的位元組數
len(rune(s))
字串s中字元的個數,可以使用更快的方法utf8.runecountinstring()
[ ]rune(s)
將字串s轉換為乙個unicode值組成的串
string(chars)
chars型別是rune或者int32, 將之轉換為字串
[ ]byte(s)
無副本的將字串s轉換為乙個原始的位元組的切片陣列,不保證轉換的位元組是合法的utf-8編碼位元組
字元與字串
在c語言裡面,我們經常會遇到對字元和字串的處理,但是有乙個很大的問題是,c語言裡本身是沒有字串這個型別的。通常我們實現字串,是通過字元型常量,和字元型陣列來代替的。也就是我們會把乙個個字元放在乙個常量區,用棧上開闢的指標變數來進行訪問,或者是在棧上開闢乙個陣列空間,將字元放在乙個陣列中,遍歷讀取。而...
字串 可變字串與不可變字串
一 nsstring 是不可變字串,所有它所有產生其他字串方法都是生成乙個新的字串,而不會改變原來字串 第一種 字面量 它是常量字串,儲存常量區 nsstring str abc 第二種是通過 快捷的構造方法 nsstring stringwithformat 第三種方式 初始化方法 nsstrin...
flash與字串 字串與屬性
有時候,我們想通過設定乙個displayobject 類是屬性值,只是需要通過點來引用即可。有時候,通過字串也可以引用顯示物件裡面的屬性值。下面舉個例子 例如我有乙個movieclip 物件,已經建立在舞台上,我們用mc表示他的物件。設定mc.x 100,那麼你看到的,mc在座標100的位置了。如果...