Heim >Backend-Entwicklung >Golang >Währungsumrechner in Go

Währungsumrechner in Go

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 05:33:10627Durchsuche

Currency Converter In Go

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


Fangen wir an

What is your base currency?

                              List             

$ USD               
United States Dollar

£ GBP               
British Pound

€ EUR       
Euro        

¥ JPY       
Japanese Yen       


  •••          

Die Hauptfunktionen der Anwendung sind:

  1. Konvertierungsdetails abrufen, die vom Benutzer eingegeben wurden
  2. Verwenden Sie diese Angaben und senden Sie eine API-Anfrage an Openxchangerates (Drittanbieterdienst mit den neuesten Währungsumrechnungskursen)
  3. Währungen und Beträge umrechnen
  4. Währungs- und Betragsdaten an den Benutzer ausgeben

Die verwendeten Pakete:

  1. net/http – für http-Anfragen an die Währungsumtausch-API
  2. github.com/charmbracelet/huh – für das TUI-Schnittstellenformular
  3. github.com/charmbracelet/bubbles/list – funktionsreich zum Durchsuchen einer allgemeinen Liste von Elementen
  4. Encoding/json – um die Daten für die API zu marsalieren
  5. github.com/charmbracelet/lipgloss – Stildefinitionen für Terminal-Layouts

Wie funktioniert es?

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       


  •••          

Abschluss

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn