变量
要点
变量(let)默认不可变,如果要可变需要使用可变变量(关键字mut)
不可变变量
let x = 0;
println!("The value of x is: {}", x);
x = 1; //Error cannot assign twice to immutable variable `x`
println!("The value of x is:{}", x);
第四行 x = 1; 会报错 Error cannot assign twice to immutable variable x
可变变量
在定义处加关键字“mut”则变量x变为可变变量
let mut x = 0;
println!("The value of x is: {}", x);
x = 1;
println!("The value of x is:{}", x);
隐藏
同名变量可以多次定义,最新定义的会覆盖之前定义的变量
let v = 2;
let v = v+1;
let v = v*10;
println!("The value of v is:{}", v);
v的结果为30
类型
- 缺省类型
数字缺省类型为i32
浮点数缺省类型为f64
位长度 | 有符号 | 无符号 |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
其中isize,usize依赖运行平台,如果平台是32位架构的则是32位的大小,如果为64位架构的则是64位大小
- 字符类型
大小为4个字节,支持中日韩等非英文类文字,Rust 中字符串和字符都必须使用 UTF-8 编码 - 复合类型
元组(tuple):将多个不同类型的只组合进一个复合类型。长度固定不可变
使用点号后跟索引来访问 ```rust let t:(bool, char, i32, f64, u32) = (true, 'a', -12, 3.1415, 32); println!("{},{},{},{},{}", t.0, t.1, t.2, t.3, t.4) ``` 解构元组值 ```rust let (a, b, c, d, e) = t; println!("{},{},{},{},{}",a, b, c, d, e) ```
数组(array)
数组中每个元素类型必须相同,长度固定不可变let num = [1,2,3,4,5]; let name = ["Tom", "Bill", "Bruce"]; let score = [60;3]; //[60, 60, 60]; let m = num[3];
切片
可以理解为C/C++的指向内存中部分数据的指针let myStr = String::from("Helloworld"); let slice1 = &myStr[0..5]; let slice2 = &myStr[5..];
其中&myStr[0..5]为从第0个开始到第4个,[0,1,2,3,4]的字符,不包括第5个,用数学的区间表达式[0..n)
&myStr[5..]的意思是从第五个开始到结束
同理如果要取得所有字符为 &myStr[..]
for 循环
let num = [1,2,3,4,5];
for e in num.iter() {
println!("{}", e)
}
for i in 0..5 {
println!("{}", num[i])
}
//逆序
for i in (0..5).rev() {
println!("{}", num[i])
}
函数
关键字 fn
fn calculate(x:i32, y:i32) ->i32 {
let result = x + y;
return result;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。