題目 基礎結構體練習: 創建一個名為Person的結構體,包含name(字元串類型)和age(整數類型)兩個欄位。 寫一個函數,接收一個Person實例作為參數,並列印出這個人的名字和年齡。 結構體方法練習: 為Person結構體添加一個方法birthday,當調用時,它將這個人的年齡增加1。 創建 ...
題目
-
基礎結構體練習:
- 創建一個名為
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);