首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >17.Rust-数组

17.Rust-数组

原创
作者头像
面向加薪学习
修改2022-09-04 11:38:20
3380
修改2022-09-04 11:38:20
举报
文章被收录于专栏:面向加薪学习面向加薪学习

数组 是用来存储一系列数据,拥有相同类型 T 的对象的集合,在内存中是连续存储的。使用中括号 [] 来创建,且它们的大小在编译时会被确定。数组下标是从0 开始。数组是在栈中分配的,数组可以自动被借用成为 切片(slice)。

数组的声明和初始化

let 变量名:[数据类型;数组长度]=[值1,值2,值3,...];
let arr1:[&str;3]=["Go语言极简一本通","Go语言微服务架构核心22讲","从0到Go语言微服务架构师"];

let 变量名=[值1,值2,值3,...];
let arr2=["Go语言极简一本通","Go语言微服务架构核心22讲","从0到Go语言微服务架构师"];

let 变量名:[数据类型;数组长度]=[默认值,数组长度];
let arr3:[&str;3]=["";3];

获取数组长度 len()

print!("{}",arr1.len());

遍历数组

for item in arr1{
   print!("充电科目 :{}\n",item);
}
//输出
充电科目 :Go语言极简一本通
充电科目 :Go语言微服务架构核心22讲
充电科目 :从0到Go语言微服务架构师

for item in arr1.iter(){
   print!("已参加的充电科目 :{}\n",item);
}
//输出
已参加的充电科目 :Go语言极简一本通
已参加的充电科目 :Go语言微服务架构核心22讲
已参加的充电科目 :从0到Go语言微服务架构师

如果修改一个不可变数组,报错如下:
arr2[0]="";
error[E0594]: cannot assign to `arr2[_]`, as `arr2` is not declared as mutable

如果想修改这个错误,声明数组的时候,添加 mut 关键字

数组做参数

值传递 传递一个数组的副本,副本的修改,不会影响原数组。

 let mut arr2=["Go语言极简一本通","Go语言微服务架构核心22讲","从0到Go语言微服务架构师"];
 print!("{:?}\n",arr2);
 show_arr(arr2);
 print!("{:?}\n",arr2);

fn show_arr(arr:[&str;3]){
    let l = arr.len();
    for i in 0..l {
       println!("充电科目: {}",arr[i]);
    }
}

//输出
["Go语言极简一本通", "Go语言微服务架构核心22讲", "从0到Go语言微服务架构师"]
充电科目: Go语言极简一本通
充电科目: Go语言微服务架构核心22讲
充电科目: 从0到Go语言微服务架构师
["Go语言极简一本通", "Go语言微服务架构核心22讲", "从0到Go语言微服务架构师"]

引用传递 传递内存的地址给函数,修改数组的任何值都会修改原来的数组。

fn modify_arr(arr:&mut [&str;3]){
    let l = arr.len();
    for i in 0..l {
        arr[i]="";
    }
}

let mut arr3=["Go语言极简一本通","Go语言微服务架构核心22讲","从0到Go语言微服务架构师"];
print!("{:?}\n",arr3);
modify_arr(&mut arr3);
print!("{:?}\n",arr3);

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数组的声明和初始化
  • 获取数组长度 len()
  • 遍历数组
  • 数组做参数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档