第七回:户口查得严,数据类型
Rust 的变量必须有确定的类型。主要分两类:标量 (Scalar) 和 复合 (Compound)。
1. 标量类型 (单身汉)
就是一个单独的值。
整数 (Integer)
就是整数数字。有符号 (i) 像欠债(可以是负数),无符号 (u) 像家产(只能是正数)。
i32:标准整数,也是 Rust 的默认选择。u32:无符号整数。i64 / u64:更大的整数。
详细户口簿(整数类型表):
| 长度 | 有符号 (欠债) | 无符号 (家产) |
|---|---|---|
| 8-bit | i8 |
u8 |
| 16-bit | i16 |
u16 |
| 32-bit (默认) | i32 |
u32 |
| 64-bit | i64 |
u64 |
| 128-bit | i128 |
u128 |
| 架构相关 | isize |
usize |
let age: u32 = 18; // 永远十八岁
let debt: i32 = -1000; // 欠了一千两
浮点数 (Floating-Point)
带小数点的。f64 是默认的,精度高;f32 精度低一点。
let pi: f64 = 3.1415926535; // 精确的圆周率
let money: f32 = 0.5; // 半两银子
布尔值 (Boolean)
非黑即白,只有 true (真) 和 false (假)。
let is_corrupt: bool = false; // 包大人不是贪官
字符 (Char)
Rust 的字符非常强大,用单引号 ''。它占 4 个字节,不仅能存英文,还能存中文、甚至 Emoji!
let c = 'z';
let z = 'ℤ';
let heart = '❤';
let star = '⭐'; // 连星星都能摘下来
2. 复合类型 (结伴而行)
元组 (Tuple)
把不同类型的数据捆在一起。就像一个杂乱的包裹。
fn main() {
// 包含:名字(str),年龄(u32),是否贪官(bool)
let suspect: (&str, u32, bool) = ("方唐镜", 40, true);
// 解包 (Pattern Matching)
let (name, age, is_bad) = suspect;
println!("嫌犯:{},年龄:{},坏人:{}", name, age, is_bad);
// 也可以用点号访问
println!("嫌犯名字:{}", suspect.0);
}
数组 (Array)
相同类型的数据排排坐。长度固定,不能变!
fn main() {
let guards = [1, 2, 3, 4, 5]; // 5个侍卫
let months = ["Jan", "Feb", "Mar"];
// 访问数组
println!("第一个侍卫编号:{}", guards[0]);
// 越界访问会 Panic!
// println!("{}", guards[10]); // 这一行会让你退堂(报错)
}
动手时刻:验明正身
请定义一个元组,包含你的名字(字符串)、你的银子数量(浮点数)和你的心情(字符,用Emoji)。然后打印出来。
fn main() {
// 你的代码
}