Day 2:基本資料型別與型別推斷

學習目標

  • 認識 Rust 的基本資料型別
  • 理解型別推斷如何運作
  • 知道何時需要明確標註型別

今日重點

基本型別總覽

let integer: i32 = 42;      // 有號整數
let unsigned: u32 = 42;     // 無號整數
let float: f64 = 3.14;      // 浮點數
let boolean: bool = true;   // 布林
let character: char = 'A';  // 字元(Unicode)
let string: String = String::from("Hello");
let slice: &[i32] = &[1, 2, 3];  // 切片
let str: &str = "hi";       // 字串字面值
let tuple: (i32, f64, bool) = (42, 3.14, true);
let array: [i32; 3] = [1, 2, 3];  // 固定長度陣列

型別推斷(Type Inference)

Rust 在編譯時會推斷型別,因此可省略標註:

let name = "John";   // 推斷為 &str
let age = 30;        // 推斷為 i32(預設整數)
let pi = 3.14;       // 推斷為 f64(預設浮點)

需要精確型別時(例如 u8)仍要明確標註。

整數型別

有號 無號 範圍
i8 u8 8 位元
i16 u16 16 位元
i32 u32 32 位元(預設)
i64 u64 64 位元
isize usize 指針對齊寬度

練習

fn main() {
    let a: i32 = 100;
    let b: u16 = 200;
    let c: f32 = 1.5;
    let flag: bool = false;
    let letter: char = '😀';

    println!("{} {} {} {} {}", a, b, c, flag, letter);
}
1. 試試不標註型別,跑 cargo build,看推斷結果。 2. 把 let pi = 3.14; 明確標成 f64

自我檢查

  • 能列出 Rust 的 8 種基本型別
  • 理解型別推斷,並知道何時要標註
  • 知道 i32 和 usize 的預設行為