Hé les gars !
Encore un petit mini-projet pour réaliser un convertisseur de devises dans Go !
C'est un projet simple mais amusant qui devrait prendre environ une heure ou deux à quelqu'un selon son expérience. Il faut un type de devise à une extrémité, la devise dans laquelle nous avons l'intention de convertir et le montant à convertir.
J'utilise un service tiers (https://openexchangerates.org) pour récupérer les dernières données sur les devises.
Mes principales devises de base sont :
1) USD 2) EUR 3) GBP 4) JPY
et j'ai également un support pour les "autres" devises via la saisie dans le TUI. Tant pour les devises de base que pour les devises à convertir.
~ Code source : trouvé ici
What is your base currency? List $ USD United States Dollar £ GBP British Pound € EUR Euro ¥ JPY Japanese Yen •••
Les principales fonctionnalités de l'application sont :
Les forfaits utilisés :
Parlons donc de la première fonctionnalité, qui consiste à obtenir les détails de la conversion de l'utilisateur.
Une méthode d'affichage pour obtenir ces données fournies par l'utilisateur a dû être créée et elle pose à l'utilisateur des questions sur la devise à convertir, la devise à convertir, et plus encore.
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
Parlons maintenant du deuxième point, en utilisant les détails de la conversion de devise et en envoyant une requête API à Openxchangerates.
Ici, j'obtiens/récupère les derniers taux de change sur Openxchangerates.org via une clé API fournie par la plateforme de change tierce. Dans mon cas, j'ai utilisé les .env pour la gestion des secrets mais il existe une multitude d'autres façons de mieux gérer cela, surtout s'il s'agissait d'une application de production.
~ Documents Openxchangerates.org utilisés pour cela : situés ici
//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 }
Ensuite, nous procéderons à la conversion des devises et des montants :
//conversion.go package conversion func Convert(amount float64, rateFrom, rateTo float64) float64 { return amount * (rateTo / rateFrom) }
qui prend simplement un montant de base (montant), un taux de la devise de base et le taux à convertir et renvoie un montant converti final.
Enfin, fournir à l'utilisateur les devises converties et les données relatives au montant.
Le contrôle de la logique derrière ces sélections est une fonction de mise à jour qui sert de gestionnaire principal de transition d'état pour le modèle de l'application.
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 •••
Cela conclut à peu près ce convertisseur de devises relativement rapide. J'espère que vous avez apprécié cette lecture rapide et n'hésitez pas à essayer également, ce n'est pas si mal ! ?.
N'hésitez pas à expérimenter également avec d'autres fournisseurs de change tiers, il y en a beaucoup. Espérons qu'ils disposent également d'une API décente !
À bientôt les gars pour le prochain ! ??
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!