rust 的文章在 數(shù)據(jù)類型
數(shù)據(jù)類型
標(biāo)量類型
整形,浮點型柿赊,布爾型薄湿,字符
整形
c++ | rust | go |
---|---|---|
int8_t | i8 | int8 |
int16_t | i16 | int16 |
int32_t | i32 | int32 |
int64_t | i64 | int64 |
- | i128 | - |
int | isize | int |
unsigned int | usize | uint |
uint8_t | u8 | uint8 |
uint16_t | u16 | uint16 |
uint32_t | u32 | uint32 |
uint64_t | u64 | uint64 |
- | u128 | - |
注意:
- rust 中的 isize 是指:64位架構(gòu)菠赚,就使用64位,而32位架構(gòu)就使用32位。(與go一樣)
而在c++中焙贷,int 是32位(在有些情況下拍皮,它只是16位)歹叮。c++標(biāo)準(zhǔn)中規(guī)定是int 最起碼有16位。 - rust 中的整形溢出在debug版會報panic铆帽,release版則不會咆耿。(這真是好東西)
浮點數(shù)
c++ | rust | go |
---|---|---|
float | f32 | float32 |
double | f64 | float64 |
布爾值
三者基本上沒啥區(qū)別
字符
| c++ | rust | go |
|8位| 32位 | 8位|
注:rust 中字符跟 go 的rune 相似
復(fù)合類型
元組
c++ | rust | go |
---|---|---|
tuple<int,string> a | let a :(i32,char,f32) = (46,'a',5.2) | - |
get<0>(a) | a.0 | - |
get<1>(a) | a.1 | - |
注:rust 中也可以 let a = (46,'a',5.2) 初始化
數(shù)組
c++ | rust | go |
---|---|---|
int a[] = {1,2}; | let a = [1,2,3]; | a:= []int{1,2,3} |
- | a.len() | len(a) |
for(auto v : a) | for val in a.iter() | for _,v := range(a) |
初始化方式
- c++
int a[5] = {1,2};
int a[] = {1,2,0,1,2};
int a[5]; - rust
let a = [1,2,3];
let a:[i32;5] = [1,2,3,4,5];
let a = [3;5]; ==> 等價與 let a=[3,3,3,3,3]; - go
var a [3]int = {1,2,3}
a := [...]int{1,2,3}
a := [3]int{1,2,3}
a := [...]int{1:1,0:2,2:3}
注:rust/go 中 訪問不存在下標(biāo)會報panic
c++ : 呵呵呵
數(shù)組作為函數(shù)參數(shù)
rust/go 都可以值傳遞(即全拷貝)
c++ 無論你怎么寫,都不是拷貝