马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
我们先从Rust根本的变量声明界说与数据类型开始学习,了解这门语言根本特性。
1 变量与可变性
- 变量声明
变量声明以let关键字开头,x为变量名,变量名后紧跟冒号和数据类型,但是rust编译器有主动推导变量类型的功能,可以省略显式的声明。
- let x:i32 = 10;
- //等价于
- let x = 10;
复制代码- let x = 10;
- x = 20;//错误❌ 不能对 不可变 变量进行赋值
复制代码
- 可变变量
mut关键字将变量x声明为可变变量,即x为可写状态
- let mut x=10;//x可变
- x = 20; //修改变量值
复制代码
- 变量遮蔽(shadow)
Rust允许在同一个代码块中声明一个与之前已声明变量同名的新变量,新变量会遮蔽之前的变量,即无法再去访问前一个同名的变量,如许就实现了变量遮蔽(类似于覆盖)。
- fn main() {
- let x = 3;
- let x = x * 2;
- println!("x: {}", x); //输出:x:6
- let x = "Hello, Rust!";
- println!("x: {}", x);//输出:Hello, Rust!
- }
复制代码 变量遮蔽的实质是通过let关键字声明了一个新的变量,只是名称可巧与前一个变量名相同而已,但它们是两个完全差异的变量,处于差异的内存空间,值可以差异,值的类型也可以差异。
2 常量界说
常量是指绑定到一个标识符且不允许改变的值,一旦界说后就没有任何方法能改变其值了。常量名通常是大写字母,且必须指定常量的数据类型
- const MAX_NUM: u32 = 1024;
复制代码 常量与不可变变量对比:
1)常量声明利用const关键字,且必须注明值的类型。
2)常量不能遮蔽,不能重复界说。
3)常量可以在任何作用域中声明,包括全局作用域。
4)常量只能被赋值为常量表达式或数学表达式,不能是函数返回值,或是其他在运行时才气确定的值。
3. 根本的数据类型
Rust的根本数据类型有整数类型、浮点数类型、布尔类型、字符类型、范围类型等。
1. 整数类型
长度有符合无符号8位i8u816位i16u1632位i32u3264位i64u64128位i128u128archisizeusize 界说与利用
- let integer1: u32 = 17; // 显式类型声明
- let integer2 = 17u32; // 类型后缀声明
- let integer3 = 17; // 默认i32类型
- let integer4: u32 = 0b10001; // 二进制
- let integer5: u32 = 0o21; // 八进制
- let integer6: u32 = 0x11; // 十六进制
- let integer7 = 50_000; // 数字可读性分隔符_
复制代码 为了方便阅读数值较大的数字,Rust允许利用下划线“_”作为假造分隔符来对数字举行可读性分隔。好比,为了进步50000的可读性,可以写成50_000。Rust在编译时会主动移除数字可读性分隔符“_”。
2. 浮点数类型
f32:单精度浮点数,小数点后至少有6位有用数字。
f64:双精度浮点数,小数点后至少有15位有用数字。 界说与利用:
- let float1: f32 = 1.1; // 显式类型声明
- let float2 = 2.2f32; // 类型后缀声明
- let float3 = 3.3; // 默认f64类型
- let float4 = 11_000.555_001; // 数字可读性分隔符_
复制代码 3. bool(布尔)类型
Rust利用bool来声明布尔类型的变量,布尔类型只有两个大概的取值,即true或false。 比方:
- let t: bool = true; // 显式类型声明
- let f = false; // 隐式类型声明
复制代码 4. 字符类型
Rust利用UTF-8作为底层的编码。字符类型代表的是一个Unicode标量值(Unicode Scalar Value),包括数字、字母、Unicode和其他特别字符。这个字符类型区别于C/C++中的界说,每个字符占4个字节。
- let c = 'z';
- let c1 = '✅';
复制代码 5. 范围类型
范围类型常用来天生从一个整数开始到另一个整数竣事的整数序列,有左闭右开和全闭两种情势,好比(1..5)是左闭右开区间,表现天生1、2、3、4这4个数字;(1..=5)是全闭区间,表现天生1、2、3、4、5这5个数字。
- fn main() {
- print!("1-5: ");
-
- for i in 1..5 {
- print!("{} ", i);
- }
- println!();
- }
复制代码 4 demo测试
编写一个简单的demo巩固上面的知识点。
下令:cargo new demo1_datatype创建工程。
测试代码:
- fn main() {
- let x = 5; //默认类型i32
- let x = x+1; //遮蔽x=5,此时x=6
- println!("遮蔽变量 x={}", x);
- let mut y = 5;
- y += 10; //可变变量
- println!("可变变量 y={}", y);
- const MAX_VALUE:i32=100*32; //常量
- println!("MAX_VALUE={}", MAX_VALUE);
- let z:char = '》'; //字符类型
- println!("字符类型 z={}, size={}字节", z, std::mem::size_of::<char>());
- let f = false; //布尔类型
- println!("布尔类型 f={}", f);
- for i in 1..=5 { //for循环 范围类型
- print!("{} ", i);
- }
- println!("");
- }
复制代码 编译输出:
5 小结
我们先从底子语法开始学习,循规蹈矩把握它的精华。此处我也给各人保举一下rust官方教程链接:Rust 步伐筹划语言 - Rust 步伐筹划语言 中文版
我是小C,接待各人一起交流学习~~~
|