數(shù)據(jù)類型
Rust是靜態(tài)類型語(yǔ)言,在編譯期所有的變量類型都必須確定下來(lái)。按理說(shuō)應(yīng)該給每個(gè)變量都聲明類型,不過(guò)由于編譯器的強(qiáng)大推斷能力,有的時(shí)候可以不聲明,讓他自己推斷,當(dāng)然也有推斷不了的,就要我們自己指定。
這個(gè)guess沒(méi)指定類型,就會(huì)報(bào)錯(cuò),parse可以轉(zhuǎn)換多種類型,不指定就無(wú)法確定究竟是哪種類型。在變量后加冒號(hào)指定類型
簡(jiǎn)單類型
1. 整型
字面值:
十進(jìn)制:34_134
十六進(jìn)制:0xff
八進(jìn)制:0o88
二進(jìn)制:0b10101100
字符(u8):b'A'
按照有符號(hào)、無(wú)符號(hào)和長(zhǎng)度分類,如32位有符號(hào):i32,8位無(wú)符號(hào):u8,默認(rèn)是i32類型。有兩個(gè)特殊的isize和usize是根據(jù)機(jī)器架構(gòu)的位數(shù)確定的,如果是64位機(jī)器他就是64位。
整型溢出編譯會(huì)通不過(guò),如果使用#[allow(arithmetic_overflow)]使其通過(guò)編譯,則不加--release運(yùn)行會(huì)panic,加--release會(huì)輪回(wrap),像首尾相接的環(huán)形數(shù)列,比如u8最大255+1會(huì)等于0。
標(biāo)準(zhǔn)庫(kù)還提供了顯示處理溢出的方法
wrapping_*:像上面說(shuō)的--release版
checked_*:溢出返回None
overflowing_*:返回值+是否溢出
saturating_*:溢出返回最大值
如255u.wrapping_add(1)結(jié)果就是0。
2. 浮點(diǎn)型
分為f32和f64,默認(rèn)是f64。浮點(diǎn)和整型運(yùn)算有+-*/%
3. 布爾
bool表示,取值為true/false。
4. 字符
char類型是unicode編碼值,4個(gè)字節(jié),有些情況下并不是我們認(rèn)為的可視字符。
符合類型
1. 元組
由一組值組成,類型可以不同,但是個(gè)數(shù)不可修改個(gè)數(shù)??梢酝ㄟ^(guò)序號(hào)訪問(wèn)
也可以解構(gòu)后,訪問(wèn)x、y和z
2. 數(shù)組
也是由一組值組成,但是類型必須相同,且個(gè)數(shù)不可修改。需要存一些固定數(shù)量的值時(shí)可以使用,值都在棧上,速度會(huì)很快。使用下標(biāo)可以訪問(wèn),出界了會(huì)panic。
定義方法有幾種,正常:
聲明類型:
多個(gè)相同值: