皆さん!
Go で通貨コンバータを作成するためのさらに別の小さなミニプロジェクト!
これはシンプルですが楽しいプロジェクトで、経験に応じて 1 ~ 2 時間ほどかかると思います。これは、一方の端から通貨タイプ、変換先の通貨、および変換される金額を受け取ります。
最新の通貨データを取得するためにサードパーティ サービス (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
次に 2 番目のポイント、通貨換算の詳細を使用して API リクエストを Openxchangerates に送信する方法について説明します。
ここでは、サードパーティの通貨交換プラットフォームによって提供される 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 中国語 Web サイトの他の関連記事を参照してください。