字元與字串

2021-07-09 11:58:57 字數 1425 閱讀 6208

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的位置了。如果...