Heim > Backend-Entwicklung > Golang > Bitcoin-Wechselkurse mit Go anzeigen

Bitcoin-Wechselkurse mit Go anzeigen

Mary-Kate Olsen
Freigeben: 2025-01-18 12:04:09
Original
357 Leute haben es durchsucht

In „Anzeigen von Python-Skriptausgaben auf Conky-Panels“ habe ich vorgeschlagen, ein Python-Skript auf einem Conky-Panel auszuführen, um Bitcoin-Wechselkurse in USD und BRL anzuzeigen. Aufgrund des über den Erwartungen liegenden Speicherverbrauchs für eine so grundlegende Aufgabe habe ich das Skript jedoch in Go neu geschrieben. Jetzt übernimmt eine kompilierte Binärdatei die Aufgabe. Dieser Ansatz ist ideal für Go-Anfänger und bietet die Möglichkeit, den Umgang mit APIs und die Textformatierung für Geldwerte zu erlernen. Hier ist eine Aufschlüsselung:

Der vollständige Code befindet sich am Ende dieses Artikels.


1 – Pakete und Importe

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "strconv"
    "github.com/dustin/go-humanize"
)
Nach dem Login kopieren
Nach dem Login kopieren
  • Paket main: Markiert dies als Einstiegspunkt des Programms.
  • Importierte Bibliotheken:
    • kodierung/json: Zum Parsen von JSON-Antworten von APIs.
    • fmt: Zum Formatieren und Drucken von Text.
    • io: Zum Lesen von Antworttexten.
    • net/http: Zum Senden von HTTP-Anfragen.
    • strconv: Zum Konvertieren von Zeichenfolgen in Zahlen.
    • humanize: Zum Hinzufügen von Tausendertrennzeichen zu Zahlen. Installieren Sie über go get github.com/dustin/go-humanize.

2 – Globale Konstanten

const (
    apiURL = "https://economia.awesomeapi.com.br/json/last/BTC-USD,BTC-BRL"
)
Nach dem Login kopieren
  • apiURL: Der API-Endpunkt zum Abrufen von Bitcoin-Wechselkursen.

3 – Strukturen für das JSON-Parsing

type CurrencyData struct {
    High string `json:"high"`
    Low  string `json:"low"`
}

type APIResponse struct {
    BTCUSD CurrencyData `json:"BTCUSD"`
    BTCBRL CurrencyData `json:"BTCBRL"`
}
Nach dem Login kopieren
  • Währungsdaten: Enthält Höchst- und Tiefstwerte für eine Währung.
  • APIResponse: Stellt die vollständige API-Antwort mit den Schlüsseln BTCUSD und BTCBRL dar.

JSON-Tags (json:"high") ordnen Strukturfelder JSON-Schlüsseln zu.


4 – Funktion zum Formatieren von Geldwerten

func formatCurrency(value string, prefix string) string {
    floatValue, err := strconv.ParseFloat(value, 64)
    if err != nil {
        return "N/A"
    }
    formattedValue := fmt.Sprintf("%s%s", prefix, humanize.FormatFloat("#,###.##", floatValue))
    return formattedValue
}
Nach dem Login kopieren
  • Konvertiert den Wert (String) mit strconv.ParseFloat in einen Float.
  • Formatiert die Zahl mit Tausendertrennzeichen und zwei Dezimalstellen und fügt das Präfix hinzu (z. B. $ oder R$).

5 - Hauptfunktion

5.1 API-Anfrage

resp, err := http.Get(apiURL)
if err != nil {
    writeError(err)
    return
}
defer resp.Body.Close()

body, err := io.ReadAll(resp.Body)
if err != nil {
    writeError(err)
    return
}
Nach dem Login kopieren
  • http.Get(apiURL): Sendet eine GET-Anfrage an die API.
  • defer resp.Body.Close(): Stellt sicher, dass der Antworttext nach der Verarbeitung geschlossen wird.
  • io.ReadAll: Liest den Antworttext.

5.2 JSON-Analyse

var data APIResponse
if err := json.Unmarshal(body, &data); err != nil {
    writeError(err)
    return
}
Nach dem Login kopieren
  • json.Unmarshal: Parst die JSON-Antwort in die APIResponse-Struktur.

5.3 Datenformatierung

usdAlta := formatCurrency(data.BTCUSD.High, "$$")
usdBaixa := formatCurrency(data.BTCUSD.Low, "$$")

brlAlta := formatCurrency(data.BTCBRL.High, "R$$")
brlBaixa := formatCurrency(data.BTCBRL.Low, "R$$")
Nach dem Login kopieren

Formatiert die von der API bereitgestellten Werte für die Anzeige.

5.4 Ergebniskonstruktion

formattedData := fmt.Sprintf(
    "\n\n${color white}BTC - USD\n${color}${color green} High: ${color}${color white}%s\n${color red} Low: ${color}${color white}%s\n\n"+
        "${color white}BTC - BRL\n${color}${color green} High: ${color}${color white}%s\n${color red} Low: ${color}${color white}%s\n",
    usdAlta, usdBaixa, brlAlta, brlBaixa,
)
fmt.Println(formattedData)
Nach dem Login kopieren

Erstellt die endgültige Ausgabezeichenfolge mit den formatierten Werten.


6 – Fehlerprotokollierungsfunktion

func writeError(err error) {
    errMsg := fmt.Sprintf("Error: %v", err)
    fmt.Println(errMsg)
}
Nach dem Login kopieren

Protokolliert Fehler im Terminal.


? btc_data.go

Ausführen: go build btc_data.go && ./btc_data.go

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "strconv"
    "github.com/dustin/go-humanize"
)
Nach dem Login kopieren
Nach dem Login kopieren

Wenn Ihnen dieser Artikel geholfen hat oder er Ihnen gefallen hat, denken Sie über einen Beitrag nach: Bitcoin-Wechselkurse mit Go anzeigen

Das obige ist der detaillierte Inhalt vonBitcoin-Wechselkurse mit Go anzeigen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage