rust程式設計(5)結構體相關練習題| 附帶解答

来源:https://www.cnblogs.com/azoux/archive/2023/11/18/17840816.html
-Advertisement-
Play Games

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


題目

  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);
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 可以少去理解一些不必要的概念,而多去思考為什麼會有這樣的東西,它解決了什麼問題,或者它的運行機制是什麼? JS JavaScript 是互聯網上最流行的腳本語言,這門語言可用於 HTML 和 web,更可廣泛用於伺服器、PC、筆記本電腦、平板電腦和智能手機等設備。 https://www.runoo ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:Django筆記四十一之Django中使用es 前面在 Python 連接 es 的操作中,有過介紹如何使用 Python 代碼連接 es 以及對 es 數據進行增刪改查。 這一篇筆記介紹一下如何為 es 的 索引 index 定義一個 model,像 ...
  • Dart庫中有大量返回結果為Future或Stream類型的函數,它們都是非同步函數,函數的返回結果在構建可能存在耗時操作之後就返回了(如:網路IO操作),而不是同步等到這些耗時操作完成後在返回。關鍵字async和wait簡化了非同步編程(如:回調地獄),讓非同步代碼的編寫看起來像同步代碼一樣…… ...
  • 大家好,我是 Java陳序員。 自從微服務開始流行之後,各種商城系統、外賣系統可是層出不窮。面試的時候人人都說做過商城系統,導致現在一聽電商系統就是爛大街的項目。 黑格爾曾經說過:存在即合理。電商系統的盛行,必然是由於市場需求導致。 目前,電商系統基本涵蓋了 J2EE 中的主要技術棧。能否實現一套全 ...
  • 馬哥原創,python全流程自動化:採集數據 -> 篩選數據 -> 存MySQL資料庫 -> 發送郵件 -> 微信提醒 -> 定時執行。 ...
  • 在今天的學習中,我們簡要瞭解了Python的控制流程,特別是if-else判斷和迴圈操作。作為有著Java開發經驗的程式員,我們跳過了一些基礎概念,著重探討if判斷和迴圈的靈活運用。Python的縮進寫法和與Java的一些語法區別都是需要註意的地方。在編寫程式時,if嵌套和迴圈是基礎結構,而設計模式... ...
  • 寫在前面 筆者技術真的很一般,也許只靠著笨鳥先飛的這種傻瓜堅持,才能在互聯網行業僥幸的生存下來吧! 為什麼這麼說? 我曾不止一次在某群,看到說我寫的東西一點技術含量都沒有,而且很沒營養,換作一年前的我,也許會懟回去,現在的話,我只是看到了,完事忘記了。 早期寫文章是為了當筆記用,不會隨時查閱,當然也 ...
  • 如圖: 已知圖片中標註1、2、3對應的內容 在業務中我需要獲取標誌2對應的"58"這個值,但是這個值不包括在某個標簽中,在span“集數”和br標簽之間,為了減小獲取"58"這個值不被之前的標簽數量的影響 先獲取標簽1所對應的元素,因為標簽1有property="v:initialReleaseDa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...