数组

Rust 的数组用于存储相同类型的数据集。 [T; N]表示一个拥有 T 类型,N 个元素的数组。数组的大小是固定。
数组的长度不可变。

创建数组

let a = [0, 1, 2, 3, 4];      // 创建数组。
let array:[i32; 9] = [3; 9];  // 创建 9个3 的数组。array变量不可变,无法修改其中元素。

访问数组

let x = array[1];
println!("{}",x);

需要注意的是,数组的索引值必须为usize的,否则会无法通过编译。

例:若i不是usize类型,则无法编译。

fn main() {
    let a = [1,2,3,4];

    let i : usize = 1;
//  let i = 1;        // 通过编译。Rust编译器会把i转为usize类型。
//  let i : i32 = 1;  // 无法通过编译。
//  let i : u32 = 1;  // 无法通过编译。

    println!("{:?}",a[i]);
}

另外,需要注意,若访问数组越界,编译不会报错。运行时程序会抛出Panic,并中断程序。

修改数组

let mut array:[i32; 9] = [3; 9];  // 创建 9个3。
array[1]=10;
array[3]=30;
println!("{:?}",array);    // 输出 [3, 10, 3, 30, 3, 3, 3, 3, 3]

遍历数组

for x in &array {
    println!("{}", x);
}

数组类型

与Go语言一样。 数组的长度也是属于数组类型的一部分。

即[i32;5]与[i32;10]不是一种类型。

例:以下代码编译会报错。

fn show(arr: [u8;3]) {  // 参数的类型是[u8;3]。
    for i in &arr {
        print!("{} ", i);
    }
}

fn main() {
    let a: [u8; 3] = [1, 2, 3];
    show(a);    // 正确代码。
    let b: [u8; 4] = [1, 2, 3, 4];
    show(b);    // 错误代码。b的类型是[u8; 4],与函数的参数类型不匹配。编译不通过。
}

操作函数

长度

len()函数,返回数组长度。返回类型usize。

let arr: [u8; 3] = [1, 2, 3];
let l = arr.len();

results matching ""

    No results matching ""