🚀 Rust 基础 5:Rust 中的结构体和枚举
欢迎回来。这是我们 7 篇 Rust 教程中的第 5 篇。
结构体和枚举是 Rust 中用于组织和表示数据的基本工具。它们使您的代码更具可读性、效率和表现力。
**步骤 1:什么是结构?**
结构就像是创建将相关信息组合在一起的自定义数据类型的蓝图。
**示例:** Person 结构体
以下是定义和使用结构的方法:
struct Person {
name: String,
age: u8, // u8 means an unsigned 8-bit integer (0–255)
}
fn main() {
// Create an instance of the Person struct
let person = Person {
name: String::from("Chisom"),
age: 25,
};
// Access and print struct fields
println!("Name: {}, Age: {}", person.name, person.age);
}**解释**
**定义结构体:**
`struct Person` 定义结构。
它有两个字段:“name(字符串)”和“age(数字)”。
**创建实例:**
`Person { name: String::from("Chisom"), age: 25 }` 创建一个 Person 实例。
**访问字段:**
使用“person.name”和“person.age”访问数据。
**步骤 2:向结构体添加方法**
您可以向结构添加方法(函数)来对其数据执行操作。
**示例**:具有面积方法的矩形结构
struct Rectangle {
width: u32, // u32 means an unsigned 32-bit integer
height: u32,
}
impl Rectangle {
// Define a method to calculate area
fn area(&self) -> u32 {
self.width * self.height
}
}
fn main() {
let rect = Rectangle { width: 10, height: 5 };
println!("The area of the rectangle is: {}", rect.area());
}**impl Rectangle:**实现 Rectangle 结构的方法。
fn area(&self):计算面积的方法。
&self 指的是正在使用的实例。
您使用 rect.area() 调用该方法。
**步骤 3:什么是枚举?**
枚举表示可以具有多个预定义变体之一的类型。可以将其视为描述“众多选项中的一件事”的一种方式。
**示例:方向枚举**
enum Direction {
Up,
Down,
Left,
Right,
}
fn main() {
let movement = Direction::Up;
match movement {
Direction::Up => println!("Going up!"),
Direction::Down => println!("Going down!"),
Direction::Left => println!("Going left!"),
Direction::Right => println!("Going right!"),
}
}**解释**
**定义枚举:**
枚举方向定义可能的方向:上、下、左、右。
使用 `match`:
`match` 检查使用了哪种变体并运行相应的代码。
“匹配”的每个分支对应枚举的一个变体。
**步骤 4:带有数据的枚举**
枚举还可以保存每个变体的数据。
**示例:消息枚举**
enum Message {
Text(String),
Number(i32),
}
fn main() {
let msg = Message::Text(String::from("Hello"));
match msg {
Message::Text(text) => println!("Message: {}", text),
Message::Number(num) => println!("Number: {}", num),
}
}**解释**:
消息的每个变体可以保存不同类型的数据(字符串或 i32)。
`match` 使用模式提取变体中的数据。
今日练习
**结构实践:**
例子:
struct Car {
brand: String,
model: String,
year: u16,
}
fn main() {
let car = Car {
brand: String::from("Toyota"),
model: String::from("Corolla"),
year: 2020,
};
println!("{} {} ({})", car.brand, car.model, car.year);
}**枚举实践:**
创建一个枚举 Weather,其变量包括 Sunny、Rainy 和 Cloudy。
使用 match 为每个变体打印适当的消息。
**例子:**
enum Weather {
Sunny,
Rainy,
Cloudy,
}
fn main() {
let today = Weather::Sunny;
match today {
Weather::Sunny => println!("It's a bright and sunny day!"),
Weather::Rainy => println!("Don't forget your umbrella!"),
Weather::Cloudy => println!("Looks like it might rain."),
}
}🎉 这就是 RUST BASICS 5 的全部内容!您已经学习了结构和枚举。在下一篇文章中,我们将学习 Rust 中的函数和错误处理。
欢迎在评论中分享你的解决方案或提问。祝你编码愉快!🦀
查看 Rust 文档了解更多详细信息。
如果有任何不清楚的地方请告诉我!
请让我知道这些例子的感受,以及您是否需要更多的练习或说明!