>백엔드 개발 >Golang >Go의 비트코인 ​​환율 스크립트

Go의 비트코인 ​​환율 스크립트

Barbara Streisand
Barbara Streisand원래의
2025-01-18 14:03:09672검색

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: 숫자에 천 단위 구분 기호를 추가합니다. 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"`
}
  • 통화데이터: 통화의 높은 값과 낮은 값을 보유합니다.
  • 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를 사용하여 값(문자열)을 부동 소수점으로 변환합니다.
  • 천 단위 구분 기호와 소수점 이하 두 자리로 숫자 형식을 지정하고 접두사(예: $ 또는 R$)를 추가합니다.

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): API에 GET 요청을 보냅니다.
  • 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

실행: btc_data.go && ./btc_data.go 빌드로 이동

package main

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

이 기사가 도움이 되었거나 즐거우셨다면 기여해 보세요. Go의 비트코인 ​​환율 스크립트

위 내용은 Go의 비트코인 ​​환율 스크립트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.