Rust学习教程18 - 数组

本文详细介绍了Rust中的数组,包括创建、访问元素以及数组切片。强调了数组长度固定、元素类型一致的特性,指出数组存储在栈上,性能优异。讨论了数组越界访问会导致运行时错误,以及数组切片作为引用类型的优势。文章以一个综合示例总结数组的使用,并预告后续高级特性学习。

本文节选自<<Rust语言圣经>>一书
欢迎大家加入Rust编程学院,一起学习交流:
QQ群:1009730433

数组

在日常开发中,使用最广的数据结构之一就是数组,在Rust中,最常用的数组有两个,第一个是长度固定且很快速的array,第二个是可动态增长的但是有一点性能损耗的Vector,在本书中,我们称呼array为数组,Vector为动态数组。

不知道你们发现没,这两个数组的关系跟&strString的关系很像,前者是长度固定的字符串切片,后者是可动态增长的字符串。其实,在Rust中无论是String还是Vector,它们都是Rust的高级类型:集合类型,在后面章节会有详细介绍。

对于本章节,我们的重点还是放在数组array上。数组的具体定义很简单:将多个类型相同的元素依次组合在一起,就是一个数组。结合上面的内容,可以得出数组的三要素:

  • 长度固定
  • 元素必须有相同的类型
  • 依次线性排列

这里再啰嗦一句,我们这里说的数组是Rust的基本类型,因此长度是固定的,这个跟其他编程语言不同,而其它编程语言的数组往往对应的是Rust中的动态数组Vector,希望读者大大牢记此点。

创建数组

在Rust中,数组是这样定义的:

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

数组语法跟javascript很像,也跟大多数编程语言很像。由于它的元素类型大小固定,且长度也是固定,因此数组是存储在栈上,性能也会非常优秀。与此对应,动态数组Vector是存储在堆上,因此长度可以动态改变。当你不确定是使用数组还是动态数组时,那就应该使用后者,具体见[动态数组Vector]一章.

举个例子,在需要知道一年中各个月份名称的程序中,你很可能希望使用的是数组而不是动态数组。因为月份是固定的,它总是包含 12 个元素:

let months = ["January", "February", "March", "April", "May", "June", "July",
              "August", "September", "October", "November", "December"];

在一些时候,还需要为数组声明类型,如下所示:

let a: [i32; 5] = [1, 2, 3, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值