Dans Affichage des sorties de script Python sur les panneaux Conky, j'ai suggéré d'exécuter un script Python sur un panneau Conky pour afficher les taux de change Bitcoin en USD et BRL. Cependant, en raison d'une consommation de mémoire plus élevée que prévu pour une tâche aussi basique, j'ai réécrit le script dans Go. Désormais, un binaire compilé gère la tâche. Cette approche est idéale pour les débutants en Go, offrant la possibilité d'apprendre la gestion des API et le formatage du texte pour les valeurs monétaires. Voici une répartition :
Le code complet se trouve à la fin de cet article.
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"` }
Les balises JSON (json : "high") mappent les champs de structure aux clés 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$$")
Formate les valeurs fournies par l'API pour l'affichage.
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)
Crée la chaîne de sortie finale avec les valeurs formatées.
func writeError(err error) { errMsg := fmt.Sprintf("Error: %v", err) fmt.Println(errMsg) }
Enregistre les erreurs sur le terminal.
Exécuter : allez construire btc_data.go && ./btc_data.go
package main import ( "encoding/json" "fmt" "io" "net/http" "strconv" "github.com/dustin/go-humanize" )
Si cet article vous a aidé ou si vous l'avez apprécié, pensez à contribuer :
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!