访问结构体字段
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 22 课,共 66 课。
创建结构体实例后,你需要一种方法来获取其中存储的值。Rust 使用点表示法访问结构体中的各个字段。
语法很简单:先写 struct 实例名,接着写一个点号,然后写你想访问的字段名:
let product = Product {
name: String::from("Laptop"),
price: 999,
};
println!("Product: {}", product.name);
println!("Price: ${}", product.price);这种点表示法与在其他编程语言中访问属性的方式相同。你可以在表达式中使用访问到的值,将它们赋给变量,或将它们传递给函数。它们的行为与该类型的其他值完全相同。
挑战
简单你将收到 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
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器