在 Conky 面板上顯示 Python 腳本輸出中,我建議在 Conky 面板上執行 Python 腳本以顯示美元和巴西雷亞爾的比特幣匯率。然而,由於這樣一個基本任務的記憶體消耗高於預期,我用 Go 重寫了腳本。現在,已編譯的二進位檔案可以處理該任務。這種方法非常適合 Go 初學者,提供了學習 API 處理和貨幣值文字格式設定的機會。詳細介紹如下:
完整程式碼在本文最後。
package main import ( "encoding/json" "fmt" "io" "net/http" "strconv" "github.com/dustin/go-humanize" )
const ( apiURL = "https://economia.awesomeapi.com.br/json/last/BTC-USD,BTC-BRL" )
type CurrencyData struct { High string `json:"high"` Low string `json:"low"` } type APIResponse struct { BTCUSD CurrencyData `json:"BTCUSD"` BTCBRL CurrencyData `json:"BTCBRL"` }
JSON 標籤 (json:"high") 將結構欄位對應到 JSON 鍵。
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 }
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 }
var data APIResponse if err := json.Unmarshal(body, &data); err != nil { writeError(err) return }
usdAlta := formatCurrency(data.BTCUSD.High, "$$") usdBaixa := formatCurrency(data.BTCUSD.Low, "$$") brlAlta := formatCurrency(data.BTCBRL.High, "R$$") brlBaixa := formatCurrency(data.BTCBRL.Low, "R$$")
格式化 API 提供的值以供顯示。
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)
使用格式化值建立最終輸出字串。
func writeError(err error) { errMsg := fmt.Sprintf("Error: %v", err) fmt.Println(errMsg) }
將錯誤記錄到終端。
運行: go build btc_data.go && ./btc_data.go
package main import ( "encoding/json" "fmt" "io" "net/http" "strconv" "github.com/dustin/go-humanize" )
如果這篇文章對您有幫助或您喜歡它,請考慮貢獻:
以上是使用 Go 顯示比特幣匯率的詳細內容。更多資訊請關注PHP中文網其他相關文章!