嘿夥伴們!
又一個用 Go 製作貨幣轉換器的小型迷你專案!
這是一個簡單但有趣的項目,根據個人經驗,應該需要大約一兩個小時。它從一端取得一種貨幣類型、我們打算轉換成的貨幣以及要轉換的金額。
我正在使用第三方服務 (https://openexchangerates.org) 來擷取最新的貨幣資料。
我主要的基礎貨幣是:
1) USD 2) EUR 3) GBP 4) JPY
而且我還可以透過 TUI 中的輸入支援「其他」貨幣。既適用於基礎貨幣,也適用於要轉換的貨幣。
~ 原始碼:在這裡找到
What is your base currency? List $ USD United States Dollar £ GBP British Pound € EUR Euro ¥ JPY Japanese Yen •••
應用程式的主要功能有:
使用的軟體套件:
所以讓我們討論第一個功能,即從用戶那裡獲取轉換詳細資訊。
必須建立一個用於取得使用者提供的資料的視圖方法,它會詢問使用者要轉換的貨幣、要轉換為哪種貨幣等問題。
func (m model) View() string { if m.err != nil { return fmt.Sprintf("Error: %v\n\nPress any key to continue.\n", m.err) } if m.finished { // Return an empty string when finished to avoid redundant output. return "" } switch m.stage { case 0: if m.isCustomInput { return questionStyle.Render("Enter your custom base currency code (e.g., USD):\n\n") + m.textInput.View() } return questionStyle.Render("What is your base currency?\n\n") + m.list.View() case 1: if m.isCustomInput { return questionStyle.Render("Enter your custom target currency code (e.g., EUR):\n\n") + m.textInput.View() } return questionStyle.Render("What do you want to convert to?\n\n") + m.list.View() case 2: return questionStyle.Render("How much to convert?\n\n") + m.textInput.View() default: return "" } }
What do you want to convert to? List $ USD United States Dollar £ GBP British Pound •••
How much to convert? > 200
現在讓我們討論第二點,使用貨幣換算詳細資訊並向 Openxchangerates 發送 API 請求。
在這裡,我透過第三方貨幣兌換平台提供的 API 金鑰從 Openxchangerates.org 取得/取得最新的貨幣匯率。就我而言,我使用 .env 進行秘密管理,但還有許多其他方法可以更好地處理此問題,特別是如果它是生產應用程式。
~ 用於此目的的 Openxchangerates.org 文件:位於此處
//api.go package api import ( "encoding/json" "fmt" "net/http" ) type CurrencyData struct { Base string `json:"base"` Rates map[string]float64 `json:"rates"` } func FetchRates(apiKey string) (CurrencyData, error) { url := fmt.Sprintf("https://openexchangerates.org/api/latest.json?app_id=%s&prettyprint=false", apiKey) resp, err := http.Get(url) if err != nil { return CurrencyData{}, err } defer resp.Body.Close() if resp.StatusCode != 200 { return CurrencyData{}, fmt.Errorf("API request failed with status: %s", resp.Status) } var data CurrencyData err = json.NewDecoder(resp.Body).Decode(&data) if err != nil { return CurrencyData{}, err } return data, nil }
然後我們將繼續轉換貨幣和金額:
//conversion.go package conversion func Convert(amount float64, rateFrom, rateTo float64) float64 { return amount * (rateTo / rateFrom) }
它只是獲取基礎金額(金額)、基礎貨幣的匯率以及要轉換的匯率並返回最終轉換的金額。
最後,將轉換後的貨幣和金額相關數據提供給用戶。
控制這些選擇背後的邏輯的是一個更新函數,它充當應用程式模型的主要狀態轉換處理程序。
1) USD 2) EUR 3) GBP 4) JPY
What is your base currency? List $ USD United States Dollar £ GBP British Pound € EUR Euro ¥ JPY Japanese Yen •••
這幾乎概括了這個相對快速的貨幣轉換器。我希望您喜歡快速閱讀,並且也可以隨意嘗試一下,這還不錯! ?.
請隨意嘗試其他第三方貨幣兌換提供商,有很多。希望他們也有像樣的 API!
大家下期再見! ??
以上是Go 中的貨幣轉換器的詳細內容。更多資訊請關注PHP中文網其他相關文章!