🚀 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 文档了解更多详细信息。
如果有任何不清楚的地方请告诉我!
请让我知道这些例子的感受,以及您是否需要更多的练习或说明!