Hey Leute!
Noch ein kleines Miniprojekt zur Erstellung eines Währungsumrechners in Go!
Es ist ein einfaches, aber unterhaltsames Projekt, das je nach Erfahrung etwa eine oder zwei Stunden dauern sollte. Es benötigt an einem Ende einen Währungstyp, die Währung, in die wir umrechnen möchten, und den umzurechnenden Betrag.
Ich nutze einen Drittanbieterdienst (https://openexchangerates.org), um die neuesten Währungsdaten abzurufen.
Meine wichtigsten Basiswährungen sind:
1) USD 2) EUR 3) GBP 4) JPY
und durch die Eingabe im TUI habe ich auch Unterstützung für „andere“ Währungen. Sowohl für Basiswährungen als auch für Währungen, in die umgerechnet werden soll.
~ Quellcode: Hier zu finden
What is your base currency? List $ USD United States Dollar £ GBP British Pound € EUR Euro ¥ JPY Japanese Yen •••
Die Hauptfunktionen der Anwendung sind:
Die verwendeten Pakete:
Lassen Sie uns also den ersten Teil der Funktionalität besprechen, nämlich das Abrufen von Konvertierungsdetails vom Benutzer.
Es musste eine Ansichtsmethode zum Abrufen dieser vom Benutzer bereitgestellten Daten erstellt werden, die dem Benutzer Fragen dazu stellt, welche Währung umgerechnet werden soll, in welche Währung umgerechnet werden soll und mehr.
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
Lassen Sie uns nun den zweiten Punkt besprechen, die Verwendung der Währungsumrechnungsdetails und das Senden einer API-Anfrage an Openxchangerates.
Hier erhalte/rufe ich die neuesten Währungskurse von Openxchangerates.org über einen API-Schlüssel ab, der von der Währungsumtauschplattform eines Drittanbieters bereitgestellt wird. In meinem Fall habe ich .envs zur Geheimverwaltung verwendet, aber es gibt eine Vielzahl anderer Möglichkeiten, dies besser zu handhaben, insbesondere wenn es sich um eine Produktions-App handelt.
~ Dafür verwendete Openxchangerates.org-Dokumente: finden Sie hier
//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 }
Dann fahren wir mit der Umrechnung der Währungen und Beträge fort:
//conversion.go package conversion func Convert(amount float64, rateFrom, rateTo float64) float64 { return amount * (rateTo / rateFrom) }
wobei einfach ein Basisbetrag (Betrag), ein Kurs aus der Basiswährung und der Kurs, in den umgerechnet werden soll, übernommen werden und ein endgültiger umgerechneter Betrag zurückgegeben wird.
Zuletzt erfolgt die Rückgabe der umgerechneten Währungen und betragsbezogenen Daten an den Benutzer.
Die Steuerung der Logik hinter diesen Auswahlen erfolgt durch eine Aktualisierungsfunktion, die als Hauptzustandsübergangshandler für das Anwendungsmodell dient.
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 •••
Das ist so ziemlich das Ende dieses relativ schnellen Währungsumrechners. Ich hoffe, Ihnen hat die kurze Lektüre gefallen und Sie können es auch gerne ausprobieren, es ist nicht so schlimm! ?.
Experimentieren Sie auch gerne mit anderen externen Währungsumtauschanbietern, es gibt viele. Hoffentlich haben sie auch eine anständige API!
Wir sehen uns beim nächsten Mal! ??
Das obige ist der detaillierte Inhalt vonWährungsumrechner in Go. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!