包龙星

这一大堆嫌犯,有高的有矮的,有胖的有瘦的,还有洋人,这户口该怎么查?

雷豹

分门别类!Rust 是静态类型语言,每个人进来都得验明正身,是男是女(类型)必须写在脑门上!

第七回:户口查得严,数据类型

Rust 的变量必须有确定的类型。主要分两类:标量 (Scalar)复合 (Compound)

1. 标量类型 (单身汉)

就是一个单独的值。

整数 (Integer)

就是整数数字。有符号 (i) 像欠债(可以是负数),无符号 (u) 像家产(只能是正数)。

详细户口簿(整数类型表):

长度 有符号 (欠债) 无符号 (家产)
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() {
    // 你的代码
}
下一回:公堂悄悄话(注释) →