【一起学Rust 基础篇】Rust基础——变量和数据类型_rust 变量指定数据类型

1.数值类型

整型

浮点型

2.字符类型

3.布尔类型

四、复合类型

元组

数组

五、常量

总结

作业

变量只有初始化了才可以使用

使用 mut 将变量标记为可变

变量解构


前言

经过前面几期的学习,大家应该对Rust已经有了个初步的了解。现在我们将从Rust的基础开始学习。

变量是一个编程语言必要的内容,学习任何一门编程语言都离不开变量,而是基础中的基础,学习Rust也是这样的。本期我们将从Rust变量的概念开始讲起,同时搭配编程案例,辅以作业,帮助大家学习和理解Rust的变量基础概念。


一、定义变量

Rust定义变量需要使用关键词let,这点和Javascript是一致的,如果你有JS开发的经验,那你应该很熟悉。现在我们定义几个变量

let x = 5;
let y = 5.0;
let str = String::from("Hello");

以上的几个变量都是没有问题的,定义了三个变量,x是整数型的,y是浮点型的,z是字符串型的。除此以外,Rust还支持指定变量类型来定义变量

let x: i32 = 5;
let y: f64 = 5.0;
let str: String = String::from("Hello");

其实我们并不是一定得指定类型,因为Rust可以自动推断你使用的是哪种类型。

二、Rust变量的可变性

在Rust中,变量默认是不可变的。如果你写了如下代码,就会报错

fn main() {
    let x = 5;
    println!("The value of x is: {x}");
    x = 6;
    println!("The value of x is: {x}");
}

报错如下

现在我们分析一下这个报错,首先看红色的报错,翻译过来的意思是,不可变的变量不可以赋值两次。意思就是不可变的变量不能再次赋值。

然后我们看蓝色的部分,第一次给x分配值,帮助:考虑使x变得可变,mut x。可以看出,蓝色的部分是帮助我们修改这个错误的,这也是Rust比较强大的地方之一。按照这个提示,我们应该这么改,

    let mut x: i32 = 5;
    print!("The value of x is: {}", x);
    x = 6;
    print!("The value of x is: {}", x);

此时我们继续运行看看,

因此我们得出结论,Rust的变量默认是不可变的,只有添加mut关键字以后才会变得可变。

三、Rust基本数据类型

1.数值类型

数值类型又分为整数型、浮点数、序列类型。

整型
长度有符号无符号
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

其中,每个长度都有有符号和无符号两种,有符号表示这个数分正数和负数,无符号则表示这个数据类型只有正数。

有符号的整型取值范围是

其中n是长度。

另外,isize 和 usize 类型依赖运行程序的计算机架构:64 位架构上它们是 64 位的, 32 位架构上它们是 32 位的。

同时也支持用不同的形式表示不同进制的字面量。

数字字面值例子
Decimal (十进制)98_222
Hex (十六进制)0xff
Octal (八进制)0o77
Binary (二进制)0b1111_0000
Byte (单字节字符)(仅限于u8)b'A'
浮点型

Rust 也有两个原生的 浮点数类型,它们是带小数点的数字。Rust 的浮点数类型是 f32 和 f64,分别占 32 位和 64 位。浮点数采用 IEEE-754 标准表示。f32 是单精度浮点数,f64 是双精度浮点数。默认类型是 f64,因为在现代 CPU 中,它与 f32 速度几乎一样,不过精度更高。所有的浮点型都是有符号的。以下是使用浮点型的实例。

fn main() {
    let x = 2.0; // f64

    let y: f32 = 3.0; // f32
}

2.字符类型

和C语言一样,char也是Rust的原生类型。但是与之不同的是,Rust的char类型是Unicode的,支持更多的字符,以下是使用字符类型的例子,(如果你能复制到梵文,连梵文也能编码了。)

fn main() {
    let c = 'z';
    let z: char = 'ℤ'; // 指定变量类型
    let heart_eyed_cat = '😻';
}

要注意分清楚字符和字符串,字符使用的是单引号,字符串使用的是双引号。

3.布尔类型

Rust 中的布尔类型有两个可能的值:true 和 false。Rust 中的布尔类型使用 bool 表示。例如:

fn main() {
    let t = true;

    let f: bool = false; // 指定变量类型
}

四、复合类型

复合类型可以将多个值组合成一个类型。Rust 有两个原生的复合类型:元组(tuple)和数组(array)。

元组

元组是一个将多个其他类型的值组合进一个复合类型的主要方式。可以将多个不同类型的值进行复合,但是元组长度固定:一旦声明,其长度不会增大或缩小。

fn main() {
    let tup1 = (500, 6.4, 1);
    let tup2: (i32, f64, u8) = (500, 6.4, 1); // 指定类型
}

同时元组也支持解构操作

fn main() {
    let tup = (500, 6.4, 1);

    let (x, y, z) = tup;

    println!("y的值是: {y}");
}

访问元组的值是使用元素在元组中的索引来访问的,索引是从0开始的,与数组是一样的

fn main() {
    let x: (i32, f64, u8) = (500, 6.4, 1);

    let x1 = x.0;



![img](https://img-blog.csdnimg.cn/img_convert/24ff83365bc56b474baa70e8b5b91f95.png)
![img](https://img-blog.csdnimg.cn/img_convert/17593012da0fe8b0e3df6f16529cfa83.png)
![img](https://img-blog.csdnimg.cn/img_convert/09dad2904df6f726154d4d1812e4db09.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

[外链图片转存中...(img-DVkwzEmh-1714171806378)]
[外链图片转存中...(img-axh2YqVG-1714171806379)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值