rust程序设计(5)结构体相关练习题| 附带解答
题目
-
基础结构体练习:
- 创建一个名为
Person
的结构体,包含name
(字符串类型)和age
(整数类型)两个字段。 - 写一个函数,接收一个
Person
实例作为参数,并打印出这个人的名字和年龄。
- 创建一个名为
-
结构体方法练习:
- 为
Person
结构体添加一个方法birthday
,当调用时,它将这个人的年龄增加1。 - 创建一个
Person
实例,并使用birthday
方法为其庆生,然后打印出新的年龄。
- 为
-
结构体关联函数练习:
- 为
Person
结构体添加一个关联函数(即静态方法)new
,它接收名字和年龄,并返回一个Person
实例。 - 使用
Person::new
来创建一个新的Person
实例。
- 为
-
带有枚举的结构体练习:
- 创建一个名为
Vehicle
的结构体,其中包含一个model
(字符串类型)和一个名为vehicle_type
的枚举(枚举值可以是Car
,Truck
,Motorcycle
等)。 - 实现一个显示
Vehicle
信息的函数,包括它的型号和类型。
- 创建一个名为
-
结构体更新语法练习:
- 创建两个
Person
实例。 - 使用结构体更新语法,创建一个新的
Person
实例,它从第一个实例继承名字,从第二个实例继承年龄。
- 创建两个
-
元组结构体练习:
- 创建一个名为
Color
的元组结构体,它有三个u8
类型的字段,代表红、绿、蓝色值。 - 创建一个
Color
实例,并打印出其各个颜色分量。
- 创建一个名为
解答
-
基础结构体练习:
struct Person { name: String, age: u32, } fn print_person(person: &Person) { println!("Name: {}, Age: {}", person.name, person.age); }
-
结构体方法练习:
impl Person { fn birthday(&mut self) { self.age += 1; } } // 使用示例 // let mut person = Person { name: String::from("Alice"), age: 30 }; // person.birthday(); // println!("New age: {}", person.age);
-
结构体关联函数练习:
impl Person { fn new(name: String, age: u32) -> Person { Person { name, age } } } // 使用示例 // let person = Person::new(String::from("Bob"), 40);
-
带有枚举的结构体练习:
enum VehicleType { Car, Truck, Motorcycle, } struct Vehicle { model: String, vehicle_type: VehicleType, } fn print_vehicle_info(vehicle: &Vehicle) { let type_str = match vehicle.vehicle_type { VehicleType::Car => "Car", VehicleType::Truck => "Truck", VehicleType::Motorcycle => "Motorcycle", }; println!("Model: {}, Type: {}", vehicle.model, type_str); }
-
结构体更新语法练习:
// let person1 = Person { name: String::from("Chris"), age: 25 }; // let person2 = Person { name: String::from("Pat"), age: 30 }; // let person3 = Person { // name: person1.name, // ..person2 // };
-
元组结构体练习:
struct Color(u8, u8, u8); // 使用示例 // let color = Color(255, 0, 0); // println!("Red: {}, Green: {}, Blue: {}", color.0, color.1, color.2);