1.2-通用概念
Create by fall on 19 May 2024 Recently revised in 19 May 2024
Rust
变量与可变性
使用 let 声明变量,且变量默认不可变(不能被重新赋值)
使用 const 声明常亮,并且常量不可以使用 mut
且类型必须标注
fn main(){
let variable_uneditable = 12;
let mut variable1 = 22;
const MAX_POINT:u32 = 2_110;
}
元组
元组的声明和使用(长度固定,类型可以不同
let tup_arr: (i32, f64, f32) = (500, 10.0, 25.2);
let (x, y, z) = tup_arr;
println!("{},{},{}", tup_arr.1, tup_arr.0, tup_arr.2);
println!("{},{},{}", x, y, z)
数组
长度一定,类型相同(数据存放在 stack(栈)内存中,可以使用数组)
数组的声明和使用
let arr: [&str; 7] = [
"Monday",
"Tuesday",
"Wednesday",
"Tuesday",
"Friday",
"Saturday",
"Sunday",
];
let mon:&str = arr[0];
println!("{}",mon);
数据标注
数据类型:标量和复合类型
标量类型
- 整数类型:
u32
(无符号整型,占据 32位(u:unsigned),i32
(证书类型 signed)(isize
、usize
:根据电脑架构是 32 还是 64 而改变) - 浮点类型:
f32
(单精度,32 位)、f64
(双精度,64 位) - 布尔类型:
bool
- 字符类型:
char
(占用 4 个字节,可以表示中文,emoji 等
不同进制的表示方式
// 十进制
let num_1 = 98_77;
// 十六进制
let num_2 = 0xfc;
// 八进制
let num_3 = 0o77;
// 二进制
let num_4 = 0b110_100;
// Byte u8 单个字符数字
let num_5 = b'A';
// 并且都可以使用类型作为后缀
let num_1 = 98_77u8;
类型的计算
let sum = 5 + 10;
let difference = 10.4 - 5.2;
let product = 4 * 24;
let quotient = 463 / 14.1;
let reminder = 54 % 3;
函数
声明函数
fn main() {
let arr: [&str; 7] = [
"Monday",
"Tuesday",
"Wednesday",
"Tuesday",
"Friday",
"Saturday",
"Sunday",
];
let mon: &str = arr[0];
// 不添加 ; 号,会表示默认返回该内容
let new_num = fun_foo(mon);
println!("一起搞点事吧,{}", new_num);
}
fn fun_foo(x: &str) -> &str {
println!("一起搞点事吧,{}", x);
// 不添加 ; 号,会表示默认返回该内容
"管道工"
}
控制流
块表达式,会把最后一个表达式作为返回值
let pink = {
let pukk: u32 = 64;
pukk - 44 // 如果添加 ; 表示没有返回值,即是一个 空的 ()
};
println!("一起搞点事吧,{}", pink);
if
、else if
、else
let state = false;
let star = if state { 4 } else { 5 };
let state = true;
let star = if state { 4 } else { 5 };
if star == 5 {
println!("star is 5");
} else if star == 4 {
println!("star is 4");
} else {
println!("star is not 4 or 5");
}
loop
、while
、for
let mut star: u32 = { 4 };
let mut arr: [u32; 5] = [0, 1, 5, 6, 7];
loop {
print!("star is {}\n", star);
if star % 10 == 1 {
break;
} else {
star += 1
}
}
let mut index = 0;
while index < 5{
println!("current index:{},value:{}",index,arr[index]);
}
// for 循环不用判断,直接向下执行,所以速度更快,并且不容易因为 index 超出数组大小导致出错
for element in arr.iter(){
println!("current value:{}", element);
}
// range
for element in (0..4).rev(){
println!("current value:{}" element);
}
注释
参考文章
作者 | 文章名称 |
---|---|
软件工艺师 | https://www.bilibili.com/video/BV1hp4y1k7SV |