Heim >Backend-Entwicklung >Golang >Bitcoin-Kursskript in Go

Bitcoin-Kursskript in Go

Barbara Streisand
Barbara StreisandOriginal
2025-01-18 14:03:09668Durchsuche

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"
)
  • 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"
)
  • 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"`
}
  • 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
}
  • 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
}
  • 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
}
  • 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$$")

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)

Erstellt die endgültige Ausgabezeichenfolge mit den formatierten Werten.


6 – Fehlerprotokollierungsfunktion

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

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"
)

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

Das obige ist der detaillierte Inhalt vonBitcoin-Kursskript 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
Vorheriger Artikel:Bitcoin-Wechselkurse mit Go anzeigenNächster Artikel:Keiner