Rust之数据类型

开发环境

  • Windows 10
  • Rust 1.51

  • VS Code 1.55.2

Rust中的主要数据类型

基本类型

  • 整型

  • 浮点类型

在Rust中,提供了f32f64两个关键字来定义浮点类型变量,默认是f64.

在Rust中,我们声明和定义整型变量时可以使用如下。

fn main() {
    // 加
    let sum = 5 + 10;

    // 减
    let difference = 95.5 - 4.3;

    // 乘
    let product = 4 * 30;

    // 除
    let quotient = 56.7 / 32.2;

    // 求余
    let remainder = 43 % 5;
}
  • 布尔类型

由关键字bool定义,取值时truefalse

示例:

let f: bool = false; 
  • 字符类型

通过引用来声明和定义。如下示例:

let c = 'z';
let z = 'ℤ';
let heart_eyed_cat = '😻';

复合类型

  • 元组类型

元组是将多个值与各种类型组合为一个复合类型的一般方法。元组有固定的长度:一旦声明,它们的长度不能增加或减小。

示例:

let tup: (i32, f64, u8) = (500, 6.4, 1);

变量tup绑定到整个元组,因为元组被认为是单个复合元素。要从元组中获取单个值,我们可以使用模式匹配来构造一个元组值,如下所示: 

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

    // 将x,y,z分别赋值tup.0, tup.1,tup.2 这段代码相当于
    // let x = tup.0;
    // let y = tup.1;
    // let z = tup.2;
    let (x, y, z) = tup;                      

    println!("The value of y is: {}", y);
}

除了通过模式匹配破坏结构之外,我们还可以使用句点(.)直接访问元组元素。后面是我们要访问的值的索引,如

fn main() {
    // 定义x元组,其中的类型分别是i32,f64和u8
    let x: (i32, f64, u8) = (500, 6.4, 1);

    // i32的变量定义并赋值
    let five_hundred = x.0;

    // f64的变量定义并赋值
    let six_point_four = x.1;

    // u8的变量定义并赋值
    let one = x.2;
}

  • 数组类型

拥有多个值集合的另一种方法是使用数组。与元组不同,数组的每个元素都必须具有相同的类型。Rust中的数组与其他语言中的数组不同,因为Rust中的数组有固定的长度,就像元组一样。

示例:

let a = [1, 2, 3, 4, 5];

您可以使用方括号编写数组的类型,括号中包括每个元素的类型、分号,然后是数组中的元素数,如下所示:

let a: [i32; 5] = [1, 2, 3, 4, 5];    // i32表示数据类型,5表示数组大小

还有一种简写, 

let a = [3; 5];     // 定义5个元素的数组a,并且各个元素的初始值为3,等价于let a = [3, 3, 3, 3, 3]

数据类型示例

下面我们看下数据类型的示例,这里还是沿用上次工程rust-demo。

use std::io;

fn main() {
    let a = [1, 2, 3, 4, 5];               // 定义数组

    println!("Please enter an array index."); 

    let mut index = String::new();            // 可变的变量

    io::stdin()
        .read_line(&mut index)
        .expect("Failed to read line");       // 从控制台输入

// usize - 整数类型用来衡量数据大小的,它的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型。
    let index: usize = index                  
        .trim()
        .parse()
        .expect("Index entered was not a number");        // 判断输入的是不是数字

    // 将a数组的中下标为输入数字的元素值赋值给element
    // 风险:由于输入的index可能大于等于5,小于0,所以这里会存在数组越界的问题
    let element = a[index];                     

    println!(
        "The value of the element at index {} is: {}", 
        index, element 
    );                                          // 打印输入的下标和元素值
}

编译运行

cargo run

运行结果 

本章重点

  • 基本数据类型
  • 复合数据类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值