使用車牌號和發動機號獲取汽車詳細資訊的Go語言程式


本文設計的Go語言程式,利用汽車的車牌號和發動機號來獲取汽車的詳細資訊。使用者可以輸入汽車資料,獲取重要的詳細資訊,例如車主姓名、登記資訊和聯絡方式。透過輸入資訊,使用者可以快速獲取所需特定汽車的資訊。這裡我們將使用三種不同的方法:GetCarDetailsByPlateAndEngine,使用validateinput,以及使用retrievecardetails函式,並透過示例來闡述這個概念。

語法

func GetCarDetailsByPlateAndEngine(plateNumber string, engineNumber string) (*CarDetails, error)

GetCarDetailsByPlateAndEngine 函式接受兩個字串引數(plateNumber 和 engineNumber),並返回一個指向 CarDetails 結構體的指標和一個錯誤。

func ValidateInput(plateNumber string, engineNumber string) error

ValidateInput 函式接受兩個字串引數(plateNumber 和 engineNumber),並返回一個錯誤。該函式負責驗證輸入值,並檢查它們是否滿足某些標準或條件。如果任何驗證失敗,它可以返回一個適當的錯誤,指示驗證失敗。

func RetrieveCarDetails(plate number string, engineNumber string) (*CarDetails, error)

CarDetails* 返回型別表明該函式檢索汽車詳細資訊,並返回指向 CarDetails 結構體的指標。CarDetails 結構體可能包含諸如汽車型號、顏色、年份和其他相關詳細資訊之類的資訊。

錯誤返回型別表明該函式在檢索過程中可能會遇到錯誤。如果發生錯誤,該函式可以返回一個適當的錯誤值以指示失敗。

演算法

  • 定義必要的資料結構,例如一個結構體來表示一輛汽車,其欄位包括車牌號、發動機號、製造商、型號、車主姓名和其他相關詳細資訊。

  • 實現一個函式,提示使用者輸入汽車的車牌號和發動機號,並將其作為字串返回。

  • 建立一個函式來驗證輸入的車牌號和發動機號。實現必要的驗證邏輯,例如檢查正確的格式或針對已註冊汽車的資料庫進行驗證。

  • 開發一個函式,根據提供的車牌號和發動機號檢索汽車的詳細資訊。此函式可以使用外部API、資料庫或任何其他資料來源來獲取汽車詳細資訊。

  • 編寫一個函式來顯示從上一步接收到的汽車詳細資訊。根據需要格式化輸出,例如列印汽車的製造商、型號、車主姓名和其他相關資訊。

  • 在主函式中,呼叫函式以提示使用者輸入汽車的車牌號和發動機號。

  • 呼叫驗證函式以確保輸入的詳細資訊有效。如果有效,則呼叫函式來檢索汽車詳細資訊。最後,使用顯示函式顯示汽車詳細資訊。

示例1

在此程式碼中,GetCarDetailsByPlateAndEngine 函式將 plateNumber 和 engineNumber 作為引數,並返回指向 CarDetails 結構體的指標以及一個錯誤。該函式模擬根據提供的車牌號和發動機號檢索汽車詳細資訊。

package main

import (
   "errors"
   "fmt"
)

type CarDetails struct {
   Model        string
   Color        string
   Year         int
   Registration string
   Engine       string
}

func GetCarDetailsByPlateAndEngine(plateNumber string, engineNumber string) (*CarDetails, error) {

   car := &CarDetails{
      Model:        "Tesla Model 3",
      Color:        "Red",
      Year:         2022,
      Registration: plateNumber,
      Engine:       engineNumber,
   }

   if car.Registration == "" || car.Engine == "" {
      return nil, errors.New("car details not found")
   }

   return car, nil
}

func main() {
   plateNumber := "ABC123"
   engineNumber := "XYZ789"

   carDetails, err := GetCarDetailsByPlateAndEngine(plateNumber, engineNumber)
   if err != nil {
      fmt.Println("Failed to retrieve car details:", err)
      return
   }

   fmt.Println("Car Details:")
   fmt.Println("Model:", carDetails.Model)
   fmt.Println("Color:", carDetails.Color)
   fmt.Println("Year:", carDetails.Year)
   fmt.Println("Registration:", carDetails.Registration)
   fmt.Println("Engine:", carDetails.Engine)
}

輸出

Car Details:
Model: Tesla Model 3
Color: Red
Year: 2022
Registration: ABC123
Engine: XYZ789

示例2

在下面的程式碼示例中,ValidateInput 函式將 plateNumber 和 engineNumber 作為引數,並返回一個錯誤。它透過檢查車牌號和發動機號是否為空來執行輸入驗證。可以根據程式的要求新增其他驗證邏輯。

package main

import (
   "errors"
   "fmt"
)

func ValidateInput(plateNumber string, engineNumber string) error {

   if plateNumber == "" {
      return errors.New("plate number is required")
   }

   if engineNumber == "" {
      return errors.New("engine number is required")
   }

   return nil
}

func main() {
   plateNumber := "ABC123"
   engineNumber := "XYZ789"

   err := ValidateInput(plateNumber, engineNumber)
   if err != nil {
      fmt.Println("Invalid input:", err)
      return
   }

   fmt.Println("Input validation successful!")
}

輸出

Input validation successful!

示例3

在下面的程式碼示例中,RetrieveCarDetails 函式將 plateNumber 和 engineNumber 作為引數,並返回指向 CarDetails 結構體的指標和一個錯誤。它透過檢查給定的車牌號和發動機號是否與資料庫或任何其他資料來源中的詳細資訊匹配來執行汽車詳細資訊的檢索。如果找到詳細資訊,它將建立一個新的 CarDetails 結構體例項,並使用檢索到的值填充它。如果未找到詳細資訊,它將返回一個錯誤,指示未找到汽車詳細資訊。

package main

import (
   "errors"
   "fmt"
)

type CarDetails struct {
   PlateNumber  string
   EngineNumber string
}

func RetrieveCarDetails(plateNumber string, engineNumber string) (*CarDetails, error) {

   if plateNumber == "ABC123" && engineNumber == "XYZ789" {
      car := &CarDetails{
         PlateNumber:  plateNumber,
         EngineNumber: engineNumber,
      }
      return car, nil
   }

   return nil, errors.New("car details not found")
}

func main() {
   plateNumber := "ABC123"
   engineNumber := "XYZ789"

   carDetails, err := RetrieveCarDetails(plateNumber, engineNumber)
   if err != nil {
      fmt.Println("Error:", err)
      return
   }

   fmt.Println("Car Details:")
   fmt.Println("Plate Number:", carDetails.PlateNumber)
   fmt.Println("Engine Number:", carDetails.EngineNumber)
}

輸出

Car Details:
Plate Number: ABC123
Engine Number: XYZ789

結論

此程式闡述了根據車牌號和發動機號檢索汽車詳細資訊的方法。透過提供準確的輸入,使用者可以獲取關於特定汽車的重要資訊,例如車主姓名和聯絡方式。它提高了處理汽車相關問題或交易時的效率和便利性。

更新於:2023年7月20日

87 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.