题目

  1. 基础结构体练习

    • 创建一个名为Person的结构体,包含name(字符串类型)和age(整数类型)两个字段。
    • 写一个函数,接收一个Person实例作为参数,并打印出这个人的名字和年龄。
  2. 结构体方法练习

    • Person结构体添加一个方法birthday,当调用时,它将这个人的年龄增加1。
    • 创建一个Person实例,并使用birthday方法为其庆生,然后打印出新的年龄。
  3. 结构体关联函数练习

    • Person结构体添加一个关联函数(即静态方法)new,它接收名字和年龄,并返回一个Person实例。
    • 使用Person::new来创建一个新的Person实例。
  4. 带有枚举的结构体练习

    • 创建一个名为Vehicle的结构体,其中包含一个model(字符串类型)和一个名为vehicle_type的枚举(枚举值可以是Car, Truck, Motorcycle等)。
    • 实现一个显示Vehicle信息的函数,包括它的型号和类型。
  5. 结构体更新语法练习

    • 创建两个Person实例。
    • 使用结构体更新语法,创建一个新的Person实例,它从第一个实例继承名字,从第二个实例继承年龄。
  6. 元组结构体练习

    • 创建一个名为Color的元组结构体,它有三个u8类型的字段,代表红、绿、蓝色值。
    • 创建一个Color实例,并打印出其各个颜色分量。

解答

  1. 基础结构体练习

    struct Person {    name: String,    age: u32,}fn print_person(person: &Person) {    println!("Name: {}, Age: {}", person.name, person.age);}
  2. 结构体方法练习

    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);
  3. 结构体关联函数练习

    impl Person {    fn new(name: String, age: u32) -> Person {        Person { name, age }    }}// 使用示例// let person = Person::new(String::from("Bob"), 40);
  4. 带有枚举的结构体练习

    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);}
  5. 结构体更新语法练习

    // 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// };
  6. 元组结构体练习

    struct Color(u8, u8, u8);// 使用示例// let color = Color(255, 0, 0);// println!("Red: {}, Green: {}, Blue: {}", color.0, color.1, color.2);