Menu
CoddyTech

访问结构体字段

本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 22 课,共 66 课。

创建结构体实例后,你需要一种方法来获取其中存储的值。Rust 使用点表示法访问结构体中的各个字段。

语法很简单:先写 struct 实例名,接着写一个点号,然后写你想访问的字段名:

let product = Product {
    name: String::from("Laptop"),
    price: 999,
};

println!("Product: {}", product.name);
println!("Price: ${}", product.price);

这种点表示法与在其他编程语言中访问属性的方式相同。你可以在表达式中使用访问到的值,将它们赋给变量,或将它们传递给函数。它们的行为与该类型的其他值完全相同。

challenge icon

挑战

简单

你将收到 3 个输入:汽车型号、汽车年份(整数)和汽车里程(整数)。定义一个包含 3 个字段的 Car 结构体:model 的类型为 String,year 的类型为 i32,mileage 的类型为 i32。使用输入值创建该结构体的实例,然后访问并打印每个字段。

要求:

  • 定义一个包含以下字段的 Car 结构体:model: String、year: i32 和 mileage: i32
  • 读取第一行输入作为汽车型号
  • 读取第二行输入,并将其转换为 i32,作为年份
  • 读取第三行输入,并将其转换为 i32,作为里程
  • 使用这些值创建一个 Car 结构体实例
  • 使用点号表示法访问每个字段,并严格按照下方所示格式打印汽车信息

输入:

  • 第一行:汽车型号(例如,Tesla Model 3)
  • 第二行:年份,整数(例如,2022)
  • 第三行:里程,整数(例如,15000)

输出:

  • 第一行:Car: [model]
  • 第二行:Year: [year]
  • 第三行:Mileage: [mileage] km

亲手试试

use std::io;

// TODO: 在这里定义 Car 结构体,包含 model、year 和 mileage 字段

fn main() {
    // 读取汽车型号
    let mut model = String::new();
    io::stdin().read_line(&mut model).expect("Failed to read line");
    let model = model.trim().to_string();
    
    // 读取年份
    let mut year_input = String::new();
    io::stdin().read_line(&mut year_input).expect("Failed to read line");
    let year: i32 = year_input.trim().parse().expect("Invalid year");
    
    // 读取里程数
    let mut mileage_input = String::new();
    io::stdin().read_line(&mut mileage_input).expect("Failed to read line");
    let mileage: i32 = mileage_input.trim().parse().expect("Invalid mileage");
    
    // TODO: 使用输入值创建一个 Car 结构体实例
    
    // TODO: 按要求的格式访问并打印每个字段
    // Car: [model]
    // Year: [year]
    // Mileage: [mileage] km
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Rust 在线编译器