结构体概览
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 21 课,共 66 课。
现在你已经了解了结构体是什么,接下来学习如何创建和使用它们。这分为两步:先定义结构体的结构,再创建它的实例。
要定义一个结构体,你需要使用 struct 关键字,后面跟着结构体的名称,并在花括号内写出它的字段。每个字段都有一个名称和类型:
struct User {
username: String,
active: bool,
}这会创建一个 User 结构体的蓝图,其中有两个字段:类型为 String 的 username 和类型为 bool 的 active。
命名约定:Rust 中的结构体名称应使用 PascalCase(也称为 UpperCamelCase),也就是说每个单词都以大写字母开头,例如 User、ProductItem 或 ShoppingCart。如果你不遵循这一约定,Rust 会发出警告。
定义结构体后,你可以为每个字段指定值来创建它的实例:
let user1 = User {
username: String::from("alice"),
active: true,
};请注意,你先写出结构体名称,后面跟着花括号,其中包含每个字段名、冒号和对应的值。字段的顺序不必与定义中的顺序一致。
要访问结构体实例的字段,请使用点表示法:先写实例名称,再写一个点和字段名称:
println!("Username: {}", user1.username);
println!("Active: {}", user1.active);这里,user1.username 用于访问 user1 的 username 字段,user1.active 用于访问 active 字段。你可以在任何使用普通变量的地方使用这些字段值。
挑战
简单你会收到 3 个输入:产品名称、价格(小数)和库存数量(整数)。定义一个 Product 结构体,包含 3 个字段:类型为 String 的 name、类型为 f64 的 price,以及类型为 i32 的 stock。然后使用输入值创建这个结构体的一个实例,并输出产品信息。
要求:
- 定义一个
Product结构体,包含以下字段:name: String、price: f64和stock: i32 - 将第一个输入读取为产品名称
- 读取第二个输入,并将其转换为
f64,作为价格 - 读取第三个输入,并将其转换为
i32,作为库存数量 - 使用这些值创建一个
Product结构体实例 - 按照下方显示的准确格式输出产品信息
输入:
- 第一行:产品名称(例如,
Laptop) - 第二行:小数形式的价格(例如,
999.99) - 第三行:整数形式的库存数量(例如,
15)
输出:
- 第一行:
Product: [name] - 第二行:
Price: $[price] - 第三行:
Stock: [quantity]
亲手试试
use std::io;
// TODO:在这里定义你的 Product 结构体
fn main() {
// 读取商品名称
let mut name = String::new();
io::stdin().read_line(&mut name).expect("Failed to read line");
let name = name.trim().to_string();
// 读取价格
let mut price_input = String::new();
io::stdin().read_line(&mut price_input).expect("Failed to read line");
let price: f64 = price_input.trim().parse().expect("Failed to parse price");
// 读取库存数量
let mut stock_input = String::new();
io::stdin().read_line(&mut stock_input).expect("Failed to read line");
let stock: i32 = stock_input.trim().parse().expect("Failed to parse stock");
// TODO:使用输入值创建 Product 结构体的实例
// TODO:按要求的格式输出商品信息
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Rust 在线编译器