精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Rust 勸退系列 之基本數據類型

開發 后端
Rust 和 Go 一樣,都是靜態類型語言,這表示每個變量的類型必須明確。和 Go 類似,大多數情況下,Rust 編譯器能夠推斷出某個值的類型,不需要我們顯示指定,寫起來有點類似于弱類型似語言。

[[396647]]

大家好,我是站長 polarisxu。

這是 Rust 勸退系列的第 4 個教程,探討 Rust 中的基本數據類型,或叫標量類型(scalar type)。

Rust 和 Go 一樣,都是靜態類型語言,這表示每個變量的類型必須明確。和 Go 類似,大多數情況下,Rust 編譯器能夠推斷出某個值的類型,不需要我們顯示指定,寫起來有點類似于弱類型似語言。但有些情況下,必須明確告知編譯器我們使用什么類型,在 Rust 中,這叫 「類型注解」(type annotations)。

對于類型注解,看一個常見的例子:

  1. let guess = "42".parse().expect("Not a number!"); 

這是將字符串 "42" 轉為數字 42。在 Go 語言中,一般這么做:

  1. guess, err := strconv.Atoi("42"
  2. if err != nil { 
  3.   panic(err) 

但上面的 Rust 代碼會報錯:

  1. error[E0282]: type annotations needed 
  2.  --> src/main.rs:2:9 
  3.   | 
  4. 2 |     let guess = "42a".parse().expect("Not a number!"); 
  5.   |         ^^^^^^ consider giving `guess` a type 

這和 Go 還是不太一樣。Go 中很多時候,數值類型會是 int。

為了修復這個問題,我們需要為 number 指定一個類型,比如 u32。

  1. let guess: u32 = "42".parse().expect("Not a number!"); 

吐槽:在 Rust 中,類型注解和 Go 中一樣,放在變量后面。但 Rust 中變量和類型直接非得加一個冒號(:),而且一般冒號緊跟著變量名(rustfmt 的建議)。不知道冒號有啥特殊需要?!

Rust 內置如下基本數據類型:

  • 整數類型
    • 有符合整數:i8、i16、i32、i64、i128、isize
    • 無符號整數:u8、u16、u32、u64、u128、usize
  • 浮點類型:f32、f64
  • 布爾型:bool
  • 字符型:char

01 整數類型

將整數類型整理為一張表,如下:(用 Go 語言對應的類型作對比)

長度 有符號 無符號 Go 有符號 Go 無符號
8-bit i8 u8 int8 uint8
16-bit i16 u16 int16 uint16
32-bit i32 u32 int32 uint32
64-bit i64 u64 int64 uint64
128-bit i128 u128 - -
arch isize usize int uint

吐槽:有時候 Rust 真的很節省,int、uint 直接省略為 i、u,function 省略為 fn。但有時候又很繁瑣(不簡潔),比如前面說到的變量和類型之間的冒號。。。

這里用 u、i 的形式,也需要一段時間適應。。。

兩點說明:

  • Go 中沒有 128 位長度的整數
  • isize 和 usize 對應 Go 中的 int 和 uint,它們的長度依賴運行程序的計算機架構:64 位架構上它們是 64 位的, 32 位架構上它們是 32 位的

在 Go 中,整型變量默認類型是 int,以下代碼可以證明這一點:

  1. x := 32 
  2. fmt.Printf("%T\n", i) 
  3. // 輸出:int 

那 Rust 中默認是什么類型呢?

我想在 Rust 中找到一種辦法,打印變量類型,網上找到了這樣的辦法(有點挫):

  1. // 打印變量類型的函數。該函數看不懂先放著。 
  2. fn print_type_of<T>(_: &T) { 
  3.   println!("{}", std::any::type_name::<T>()) 
  4.  
  5. fn main() { 
  6.     let x = 32; 
  7.     print_type_of(&x); 
  8.    // 輸出:i32 

可見 Rust 中整型變量默認類型是 i32(即使在 64 位機器上,也是 i32)。這一定程度上說明,在 Go 中,整數一般建議用 int 類型;而 Rust 中,一般建議用 i32 類型。(所以,為什么開頭的 parse 不能默認推斷為 i32 類型呢?怕溢出?)

更智能的類型推斷

上文說 Rust 和 Go 一樣,支持類型推斷。不過 Rust 的推斷更智能,怎么個智能法?看下面的代碼:

  1. // 打印變量類型的函數 
  2. fn print_type_of<T>(_: &T) { 
  3.     println!("{}", std::any::type_name::<T>()) 
  4.  
  5. fn main() { 
  6.     let x = 32; 
  7.     let y: i8 = x; 
  8.     print_type_of(&x); 
  9.     print_type_of(&y) 

根據上面的講解,x 應該是默認類型:i32。但實際上,x 和 y 的類型都是 i8。也就是說,因為 x 的類型沒有顯示的指定(類型注解),Rust 編譯器會根據上下文(實際上是 let y: i8 = x 這句)推斷出 x 的類型應該和 y 一致,即 i8。

在 Go 中,int8 和 int 是不會進行隱式轉換的,Rust 也一樣,必須進行顯示轉換。但 Rust 的智能類型推斷,可以讓開發者少寫類型轉換的代碼。

比如上面代碼,在 Go 語言中是行不通的:

  1. package main 
  2.  
  3. import ( 
  4.  "fmt" 
  5.  
  6. func main() { 
  7.  x := 32 
  8.  var y int8 = x 
  9.  fmt.Printf("%T\n", x) 
  10.  fmt.Printf("%T\n", y) 

會報錯:

  1. cannot use x (type intas type int8 in assignment 

也就是說,Go 中的類型推斷不會考慮上下文,因此沒有 Rust 智能。

因為編譯器的強大,VSCode 中(安裝 rust-analyzer)會有類型提示,這樣上面的 print_type_of 函數也不需要了。做了一個動圖,注意上面 x 的類型變化:

此外,isize 和 usize 類型一般用作某些集合的索引,以后文章會看到。

關于各種類型的表示范圍我列出了,因為這個系列不是為無編程經驗的人準備的。這個系列更多是為 Go 愛好者準備的 Rust 教程,因此和 Go 一致的地方可能不會講。

02 浮點類型

和 Go 一樣,Rust 也有兩種浮點數類型:f32 和 f64,對應 Go 中的 float32 和 float64。和 Go 一樣,默認類型是 f64,可以通過類型注解指定具體的浮點類型。

  1. let x = 2.0; // 默認是 f64 

一般地,整數類型和浮點類型都成為數值類型。

數值類型有一些共同的東西。比如都支持基本的數學運算。此外,除了通過類型注解指定類型,數值類型還可以在字面值后面帶上類型后綴指定類型,比如:

  1. let x = 2.0f32; // f32 類型 
  2. let y = 32i64; // i64 類型 

03 布爾型

和 Go 語言一樣,Rust 中的布爾類型使用 bool 表示(咋沒用 b、bl 之類的縮寫呢?哈哈哈)。有兩個可能的值:true 和 false。

  1. fn main() { 
  2.     let t = true
  3.  
  4.     let f: bool = false; // 顯式指定類型注解 

04 字符型

Rust 中的 char 表示字符類型,是 Rust 的基本類型,字面值由單引號指定。

  1. let a = 'a'
  2. let b = '中'
  3. let c = '🤣'

可見,Rust 中的 char 類型和 Go 中的 rune 一樣,表示的是 Unicode 碼點,占 4 個字節。

因為 Rust 中的字符串很復雜,而且不是基本類型,因此留在以后講解。

05 小結

本文介紹了 Rust 中的四種基本數據類型:整型、浮點型、布爾型和字符型。其中,浮點型、布爾型和字符型分別對應 Go 中的浮點型、布爾型和 rune 類型,但整型,Go 和 Rust 有些許不一樣,上文已經詳細介紹了。此外,Go 中復數也是基本數據類型:complex64 和 complex128,而 Rust 中沒有,復數通過第三方庫實現,比如:https://crates.io/crates/easy_complex。

此外,你可能會說 Go 中還有一個基本類型:byte,而 Rust 沒有。其實 Go 中的 byte 只是 uint8 的別名。另外,string 在 Go 中是基本數據類型,而在 Rust 中不是。

本文轉載自微信公眾號「polarisxu」,可以通過以下二維碼關注。轉載本文請聯系polarisxu公眾號。

 

責任編輯:武曉燕 來源: polarisxu
相關推薦

2021-07-07 21:40:46

Rust函數勸退

2016-08-18 14:13:55

JavaScript基本數據引用數據

2010-10-08 09:02:03

JavaScript基

2023-05-14 18:56:50

Rust數據類型

2011-05-26 14:27:56

java

2019-11-11 14:55:25

Redis數據類型命令

2023-03-27 10:04:27

數據類型浮點型布爾型

2017-02-27 08:34:09

JavaScript數據引用

2020-10-26 13:46:07

Java基礎入門篇

2009-08-14 11:15:45

C#基本數據類型

2010-04-27 11:03:39

Oracle Java

2023-07-04 08:41:08

Redis數據類型

2018-05-25 09:50:30

Java數據類型類型轉換

2010-01-18 16:49:36

VB.NET基本數據類

2021-04-19 20:36:06

存儲Rust變量

2024-04-11 13:02:10

Rust數據類型

2023-11-01 16:01:00

數據類型Rust

2024-11-04 06:20:00

Redis單線程

2024-06-11 08:30:31

2010-10-08 15:11:28

JavaScript數
點贊
收藏

51CTO技術棧公眾號

小毛片在线观看| 分分操这里只有精品| 国产又黄又粗又猛又爽| 欧美国产精品| 日韩成人网免费视频| 亚洲三级视频网站| 黄网站在线观| 久久夜色精品一区| 成人在线播放av| 天天操天天干视频| 天天影视天天精品| 日韩久久午夜影院| 亚欧美一区二区三区| 中老年在线免费视频| 亚洲欧美日本韩国| 青青草原成人| 六月丁香综合网| 蜜桃一区二区三区在线观看| 97精品免费视频| 黄色精品视频在线观看| 一区二区小说| 欧美成人vps| 天天干天天草天天| 午夜影院在线播放| 一级女性全黄久久生活片免费| 欧美视频小说| 色噜噜在线播放| 国产麻豆9l精品三级站| 国产91色在线|免| 日本一区二区欧美| 91精品国产视频| 有码中文亚洲精品| av无码av天天av天天爽| 一区二区三区四区精品视频| 精品视频一区 二区 三区| 黄色影院一级片| 欧美videosex性欧美黑吊| 91在线视频观看| 国产一区免费在线观看| www.97超碰| 国产在线不卡一卡二卡三卡四卡| 国产精品99久久久久久久久 | 在线播放国产视频| 欧美在线一级| 欧美日韩电影在线| 日日躁夜夜躁aaaabbbb| 精品3atv在线视频| 欧美日韩亚洲精品内裤| 国产免费裸体视频| 污视频网站在线免费| 综合激情成人伊人| 久久免费视频2| 麻豆传媒在线观看| 亚洲欧美一区二区在线观看| 亚洲一区三区电影在线观看| 秋霞a级毛片在线看| 国产精品网曝门| 亚洲午夜久久久影院伊人| av在线天堂| 国产精品国产三级国产三级人妇 | 99视频在线观看地址| 久久精品视频免费| 亚洲精品国产一区| 日韩在线资源| 亚洲欧美国产三级| 欧美视频在线观看视频| 美女露胸视频在线观看| 狠狠色香婷婷久久亚洲精品| 成人性做爰aaa片免费看不忠| 欧美最新精品| 欧美高清视频在线高清观看mv色露露十八| 2025韩国理伦片在线观看| 日韩毛片免费看| 91精品婷婷国产综合久久性色 | 91精品尤物| 亚洲精品理论电影| 国产小视频自拍| 99久久夜色精品国产亚洲96| 九九精品在线观看| 日韩中文字幕在线观看视频| 日本网站在线观看一区二区三区| 成人在线国产精品| 欧美熟妇交换久久久久久分类| 97久久精品人人澡人人爽| 欧美一级二级三级| 国产黄色小视频在线| 亚洲一本大道在线| 久久精品免费网站| 精品99re| 亚洲色图激情小说| 黄色一级大片在线免费观看| 亚洲青色在线| 国产欧美一区二区白浆黑人| 亚洲成人777777| 久久久久久久综合日本| 精品国产一区二区三区在线| 欧美gv在线| 欧美撒尿777hd撒尿| www.美色吧.com| 精品国产欧美日韩| 欧美成人午夜视频| 黄色在线免费观看| 国产真实乱子伦精品视频| 九九99久久| 日本中文字幕电影在线免费观看| 亚洲国产精品久久不卡毛片 | 国产精品一二三四五| 国内精品二区| 国产超级va在线视频| 黑人精品xxx一区| 在线观看av免费观看| 午夜精品福利影院| 乱亲女秽乱长久久久| 精品国产一区二区三区四| 国产做a爰片久久毛片| 免费看国产精品一二区视频| 男女视频在线| 欧美精品一卡两卡| 最新中文字幕av| 亚洲主播在线| 国产传媒一区| 国产黄色小视频在线| 欧美性感一类影片在线播放| 亚洲一级av无码毛片精品| 亚洲午夜精品一区 二区 三区| 国产精品jizz在线观看麻豆| 午夜小视频免费| 亚洲一区二区三区影院| 天天影视色综合| 成人看的羞羞网站| 日本精品在线视频| 天天操天天干天天插| 亚洲精品日韩专区silk| 五月天开心婷婷| 成人激情开心网| 国产精品久久久久久久av大片| 天天操天天射天天舔| 亚洲国产日韩a在线播放性色| 国产精品igao网网址不卡| 久久亚洲成人| 国产精品永久免费| 成年人视频网站在线| 一本一道综合狠狠老| 无码人妻精品一区二区三| 一区二区在线| 91在线视频导航| wwwav在线| 日韩三级.com| 久久免费精彩视频| 成人免费高清在线| 成年人视频观看| 亚洲自拍电影| 日本午夜在线亚洲.国产| 欧美香蕉爽爽人人爽| 懂色aⅴ精品一区二区三区蜜月| 中文视频在线观看| aⅴ色国产欧美| 欧美 日韩 国产在线| 国产精品高清乱码在线观看| 在线电影av不卡网址| 中文字幕一区二区三区四区免费看 | 午夜日韩影院| 欧美精品免费在线观看| 亚洲国产精品国自产拍久久| 亚洲综合色噜噜狠狠| 在线免费看污网站| 欧美aa国产视频| 国产三区精品| 中文字幕资源网在线观看免费| 亚洲欧美一区二区三区四区 | 精品国产制服丝袜高跟| 午夜精品一区二区三区视频免费看| 国产精品久久久久久99| 91香蕉视频污在线| 欧美日韩亚洲第一| 欧美色婷婷久久99精品红桃| 91在线观看欧美日韩| 91桃色在线观看| 亚洲天堂av图片| 国产精品亚洲lv粉色| 亚洲国产日韩一级| 久久久久久久毛片| 国产精一品亚洲二区在线视频| www插插插无码免费视频网站| 奇米影视777在线欧美电影观看 | 免费成人进口网站| 精品午夜电影| 国产欧美一区二区| 高清在线视频不卡| 神马久久桃色视频| 黄色三级网站在线观看| 在线中文字幕一区| 欧美人与禽zozzo禽性配| 99精品久久99久久久久| 亚洲xxx在线观看| 999在线观看精品免费不卡网站| 日韩高清av| 成人另类视频| 国产精品稀缺呦系列在线| 欧洲一区二区三区| 中文字幕成人在线| 日韩有码第一页| 欧美精品vⅰdeose4hd| av资源免费观看| 亚洲激情第一区| 欧美做受高潮6| 成人精品在线视频观看| 日韩肉感妇bbwbbwbbw| 亚洲国产日本| 制服诱惑一区| 免费av一区二区三区四区| 亚洲一区久久久| 日本久久免费| 国内精品视频一区| 91蜜桃在线视频| 中文字幕亚洲欧美日韩在线不卡| 老司机午夜福利视频| 69av一区二区三区| 无码一区二区三区在线观看| 亚洲最快最全在线视频| 制服丨自拍丨欧美丨动漫丨| 91麻豆免费观看| 中国特级黄色大片| 国产一区二区免费在线| 成人日韩在线视频| 日韩成人av影视| 男人揉女人奶房视频60分| 国产综合激情| 国产精品igao激情视频| 99久久激情| 亚洲人成77777| 欧美日韩久久精品| 欧美日韩国产三区| 牛牛影视久久网| 国产精品免费看一区二区三区| 精品国产乱码久久久久久樱花| 成人a免费视频| 欧美成人aaa| 国产美女精品视频| 电影一区电影二区| 国产精品第二页| 岛国精品在线| 国产精品国产亚洲伊人久久| av在线播放一区| 国产精品久久综合av爱欲tv| 欧美成人资源| 国产成人综合精品| 你懂得影院夜精品a| 国产精品大陆在线观看| 国精产品一区二区三区有限公司| 国产91在线播放九色快色| 经典三级一区二区| 国产福利视频一区二区| 成人免费一区| 国产日产欧美a一级在线| 日韩一区二区三免费高清在线观看| 国产精品视频99| **国产精品| 99国精产品一二二线| 国产精品任我爽爆在线播放| 国产一区二区精品在线| 要久久电视剧全集免费| 日本一区二区在线视频| 久久国产影院| 福利在线小视频| 亚洲欧洲日本mm| 国产熟人av一二三区| 美腿丝袜亚洲一区| 91香蕉视频免费看| 丁香婷婷深情五月亚洲| 免费a级黄色片| 国产欧美一区二区精品忘忧草| 亚洲熟女少妇一区二区| 亚洲综合色噜噜狠狠| 久久青青草原亚洲av无码麻豆| 欧美日韩免费在线视频| 99国产精品久久久久99打野战| 精品国产3级a| 麻豆影视在线| 久久精品视频在线| 操人在线观看| 国产精品人成电影在线观看| 日韩精品视频中文字幕| 精品在线不卡| 国产精品videosex性欧美| 精品国产av无码一区二区三区| 久久免费国产| 亚洲天堂一区二区在线观看| av欧美精品.com| 国精品人伦一区二区三区蜜桃| 亚洲成人精品一区| 伊人久久久久久久久久久久 | 日本三级韩国三级久久| 91亚洲精品在看在线观看高清| 国产一区二区三区四区hd| 日本大胆欧美| 91精品91久久久中77777老牛| 久久99热这里只有精品| 欧美日韩一区二区三区四区五区六区| 久久久不卡网国产精品一区| 欧美精品入口蜜桃| 91搞黄在线观看| 秋霞欧美在线观看| 三级精品视频久久久久| 美女露胸视频在线观看| 亚洲精品欧美日韩| 国产一区二区电影在线观看| 久无码久无码av无码| 久久爱另类一区二区小说| 少妇毛片一区二区三区| 亚洲激情中文1区| 最近日韩免费视频| 亚洲国产一区自拍| 成人看av片| 国产精品三级久久久久久电影| 爽爽窝窝午夜精品一区二区| 成人av在线不卡| 激情深爱一区二区| jizz18女人高潮| 欧美日韩中文字幕| 男人天堂av网| 不卡av在线播放| 久久三级毛片| 亚洲欧美日韩精品在线| 久久久久看片| 给我看免费高清在线观看| 亚洲一级二级三级| www.av日韩| 欧美精品做受xxx性少妇| 亚洲男男av| 一区一区视频| 男人的天堂亚洲一区| 日韩丰满少妇无码内射| 色综合视频在线观看| 日本一区高清| 欧洲成人免费视频| 亚洲午夜久久| www.浪潮av.com| 久久综合狠狠综合久久激情| 国产成人免费观看视频 | 欧美怡红院视频| 电影在线一区| 国产成人午夜视频网址| 国产剧情在线观看一区| 国产真人无码作爱视频免费| 91丨porny丨国产入口| 国产又色又爽又黄的| 亚洲国产精品大全| 一区二区三区四区日本视频| 欧美不卡在线一区二区三区| 久久精品中文| 免费看污片的网站| 欧美视频在线一区| 午夜视频在线观看免费视频| 91麻豆国产精品| 欧美日韩专区| 偷偷色噜狠狠狠狠的777米奇| 五月激情六月综合| 久热av在线| 成人激情在线播放| 亚洲欧美亚洲| 国产又粗又长又爽| 欧美午夜丰满在线18影院| 黄色视屏网站在线免费观看| 国产精品久久久999| 五月精品视频| 视频免费在线观看| 一本一本大道香蕉久在线精品 | 91大神免费观看| 亚洲成人自拍网| 爽爽视频在线观看| 国产精品国产三级国产专播精品人 | 亚洲国产精品第一页| 亚洲成av人在线观看| 伦理片一区二区三区| 国产精品一久久香蕉国产线看观看| 久久成人综合| 男人女人拔萝卜视频| 精品人伦一区二区三区蜜桃网站 | 六月丁香色婷婷| 秋霞午夜一区二区| 国产精品久久久乱弄| 日本精品一二三区| 91久久国产最好的精华液| 国产三区视频在线观看| 黑人巨大精品欧美一区二区小视频| 日韩激情视频网站| 久草国产在线观看| 亚洲欧美精品伊人久久| 欧美午夜在线播放| 一级黄色香蕉视频| 依依成人综合视频| 国产www.大片在线| 国产成人看片| 精品在线免费视频| 国产乱国产乱老熟| 超碰精品一区二区三区乱码| 美女久久99 | 久久精品网站免费观看| 亚洲精品国产一区二|