ホームページ > バックエンド開発 > Golang > Go でビットコインの為替レートを表示する

Go でビットコインの為替レートを表示する

Mary-Kate Olsen
リリース: 2025-01-18 12:04:09
オリジナル
360 人が閲覧しました

Conky パネルでの Python スクリプト出力の表示では、Conky パネルで Python スクリプトを実行して、ビットコインの為替レートを USD と BRL で表示することを提案しました。ただし、このような基本的なタスクでは予想以上にメモリを消費するため、スクリプトを Go で書き直しました。現在は、コンパイルされたバイナリがタスクを処理します。このアプローチは Go 初心者にとって理想的であり、API 処理と通貨値のテキスト形式を学ぶ機会を提供します。内訳は次のとおりです:

完全なコードはこの記事の最後にあります。


1 - パッケージとインポート

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "strconv"
    "github.com/dustin/go-humanize"
)
ログイン後にコピー
ログイン後にコピー
  • package main: これをプログラムのエントリ ポイントとしてマークします。
  • インポートされたライブラリ:
    • エンコーディング/json: API からの JSON 応答を解析します。
    • fmt: テキストの書式設定と印刷用。
    • io: レスポンスボディの読み取り用。
    • net/http: HTTP リクエストを行うため。
    • strconv: 文字列を数値に変換します。
    • humanize: 数字に千の区切り文字を追加します。 go get github.com/dustin/go-humanize.
    • 経由でインストールします。

2 - グローバル定数

const (
    apiURL = "https://economia.awesomeapi.com.br/json/last/BTC-USD,BTC-BRL"
)
ログイン後にコピー
  • apiURL: ビットコイン為替レートを取得する API エンドポイント。

3 - JSON 解析の構造

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

type APIResponse struct {
    BTCUSD CurrencyData `json:"BTCUSD"`
    BTCBRL CurrencyData `json:"BTCBRL"`
}
ログイン後にコピー
  • CurrencyData: 通貨の最高値と最低値を保持します。
  • APIResponse: BTCUSD キーと BTCBRL キーを含む完全な API レスポンスを表します。

JSON タグ (json:"high") は、構造体フィールドを JSON キーにマップします。


4 - 金額をフォーマットする機能

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
}
ログイン後にコピー
  • strconv.ParseFloat を使用して値 (文字列) を float に変換します。
  • 接頭辞 ($ または R$ など) を追加して、桁区切り記号と小数点以下 2 桁を使用して数値をフォーマットします。

5 - 主な機能

5.1 APIリクエスト

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): GET リクエストを API に送信します。
  • defer resp.Body.Close(): 処理後に応答本文が確実に閉じられるようにします。
  • io.ReadAll: 応答本文を読み取ります。

5.2 JSON の解析

var data APIResponse
if err := json.Unmarshal(body, &data); err != nil {
    writeError(err)
    return
}
ログイン後にコピー
  • json.Unmarshal: JSON 応答を APIResponse 構造体に解析します。

5.3 データのフォーマット

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

brlAlta := formatCurrency(data.BTCBRL.High, "R$$")
brlBaixa := formatCurrency(data.BTCBRL.Low, "R$$")
ログイン後にコピー

API が提供する値を表示用にフォーマットします。

5.4 結果の構築

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)
ログイン後にコピー

フォーマットされた値を使用して最終的な出力文字列を作成します。


6 - エラーログ機能

func writeError(err error) {
    errMsg := fmt.Sprintf("Error: %v", err)
    fmt.Println(errMsg)
}
ログイン後にコピー

ターミナルにエラーを記録します。


? btc_data.go

実行: go build btc_data.go && ./btc_data.go

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "strconv"
    "github.com/dustin/go-humanize"
)
ログイン後にコピー
ログイン後にコピー

この記事が役に立った、または楽しんでいただけた場合は、貢献することを検討してください: Go でビットコインの為替レートを表示する

以上がGo でビットコインの為替レートを表示するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート