Rust(8):数组类型

今天学习的内容是 Rust 中的数组类型

创建数组

数组是一种长度固定,元素类型相同的数据存储结构。

JS 中的数组长度可变,元素类型不限,和 Rust 有很大区别。

在 Rust 中使用 [T;N] 表示数组类型,其中 T 表示数组内元素的类型,N 表示数组的长度,比如

// 定义一个数组,元素类型是 u32,长度是5,即有5个元素
let arr: [u32; 5] = [1, 2, 3, 4, 5];

如果数组的初始化元素的值都相同,则可以使用简化写法:

// 创建一个元素均为 1 的,长度为 5 的数组
let arr: [u32; 5] = [1; 5];

使用数组

要使用数组中的元素,可以通过下标索引。数组的索引从 0 开始:

let arr: [u32; 5] = [1, 2, 3, 4, 5];

println!("{}", arr[2]); // 3   

使用索引修改元素:

arr[3] = 10;

数组类型也提供了一个关联方式,比如使用 len 获取数组的长度

println!("{}", arr.len()); // 5

数组越界访问

数组不能越界访问,即不能访问超过数组长度的位置的元素。

对于索引的越界访问,如果索引能在编译期确定,就可以在编译时报错;否则就只能在运行时报错,比如:

let arr: [u32; 5] = [1, 2, 3, 4, 5];

println!("{}", arr[5]); 

会提示:thread 'main' panicked at 'index out of bounds: the len is 5 but the index is 5',意思是索引超过边界了,长度为 5 索引也为 5。

如果是运行时报错的情况,比如变量 index 是一个由字符串转为整数类型的值,它在运行时才会进行转换:

// 一个字符串在 parse 成整数类型时可以出错,使用 `upwrap` 承接,当程序出错的时候就会退出运行
let index = "5".parse::<u32>().unwrap();
println!("{}", arr[index]);

程序在编译时不会报错,在运行时就会报越界访问的错误。

小结

Rust 中的数组类型是一种长度固定,用于组织相同类型的元素的集合类型,在开发中用的非常多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昆吾kw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值