> 백엔드 개발 > Golang > Go 환율 계산기

Go 환율 계산기

Barbara Streisand
풀어 주다: 2024-12-06 05:33:10
원래의
623명이 탐색했습니다.

Currency Converter In Go

안녕하세요!

Go에서 통화 변환기를 만들기 위한 또 다른 작은 미니 프로젝트!

경험에 따라 1~2시간 정도 소요되는 간단하지만 재미있는 프로젝트입니다. 한쪽 끝에서 통화 유형, 변환하려는 통화 및 변환할 금액을 가져옵니다.

최신 통화 데이터를 검색하기 위해 타사 서비스(https://openexchangerates.org)를 활용하고 있습니다.

나의 주요 기본 통화는 다음과 같습니다.

1) USD
2) EUR
3) GBP
4) JPY
로그인 후 복사
로그인 후 복사

그리고 TUI 입력을 통해 "다른" 통화도 지원됩니다. 기본 통화와 변환할 통화 모두입니다.

~ 소스코드: 여기


시작하자

What is your base currency?

                              List             

$ USD               
United States Dollar

£ GBP               
British Pound

€ EUR       
Euro        

¥ JPY       
Japanese Yen       


  •••          
로그인 후 복사
로그인 후 복사

애플리케이션의 주요 기능은 다음과 같습니다.

  1. 사용자가 입력한 전환 세부정보 가져오기
  2. 해당 세부정보를 사용하여 Openxchangerates(최신 환율을 제공하는 타사 서비스)에 API 요청을 보냅니다.
  3. 통화 및 금액 변환
  4. 사용자에게 통화 및 금액 데이터 출력

사용된 패키지:

  1. net/http - 통화 교환 API에 대한 http 요청용
  2. github.com/charmbracelet/huh - TUI 인터페이스 양식
  3. github.com/charmbracelet/bubbles/list - 범용 항목 목록을 탐색할 수 있는 풍부한 기능
  4. 인코딩/json - API용 데이터를 마샬링하기 위해
  5. github.com/charmbracelet/lipgloss - 터미널 레이아웃에 대한 스타일 정의

어떻게 작동하나요?

이제 사용자로부터 전환 세부정보를 가져오는 첫 번째 기능에 대해 논의해 보겠습니다.

이 사용자 제공 데이터를 가져오기 위한 보기 방법이 만들어져야 했으며 사용자에게 어떤 통화로 변환할지, 어떤 통화로 변환할지 등에 대해 질문합니다.

func (m model) View() string {
    if m.err != nil {
        return fmt.Sprintf("Error: %v\n\nPress any key to continue.\n", m.err)
    }

    if m.finished {
        // Return an empty string when finished to avoid redundant output.
        return ""
    }

    switch m.stage {
    case 0:
        if m.isCustomInput {
            return questionStyle.Render("Enter your custom base currency code (e.g., USD):\n\n") + m.textInput.View()
        }
        return questionStyle.Render("What is your base currency?\n\n") + m.list.View()
    case 1:
        if m.isCustomInput {
            return questionStyle.Render("Enter your custom target currency code (e.g., EUR):\n\n") + m.textInput.View()
        }
        return questionStyle.Render("What do you want to convert to?\n\n") + m.list.View()
    case 2:
        return questionStyle.Render("How much to convert?\n\n") + m.textInput.View()
    default:
        return ""
    }
}
로그인 후 복사
What do you want to convert to?

                                  List             

$ USD               
United States Dollar

£ GBP               
British Pound       


  •••        
로그인 후 복사
How much to convert?

                    > 200 
로그인 후 복사

이제 통화 변환 세부정보를 사용하고 Openxchangerates에 API 요청을 보내는 두 번째 사항에 대해 논의하겠습니다.

여기에서는 타사 환전 플랫폼에서 제공하는 API 키를 통해 Openxchangerates.org에서 최신 환율을 가져오거나 가져오고 있습니다. 제 경우에는 비밀 관리를 위해 .env를 사용했지만 특히 프로덕션 앱인 경우 이를 더 잘 처리할 수 있는 다른 방법이 많이 있습니다.

~ Openxchangerates.org 문서는 여기에 사용됩니다.

//api.go

package api

import (
    "encoding/json"
    "fmt"
    "net/http"
)

type CurrencyData struct {
    Base  string             `json:"base"`
    Rates map[string]float64 `json:"rates"`
}

func FetchRates(apiKey string) (CurrencyData, error) {
    url := fmt.Sprintf("https://openexchangerates.org/api/latest.json?app_id=%s&prettyprint=false", apiKey)
    resp, err := http.Get(url)
    if err != nil {
        return CurrencyData{}, err
    }
    defer resp.Body.Close()

    if resp.StatusCode != 200 {
        return CurrencyData{}, fmt.Errorf("API request failed with status: %s", resp.Status)
    }

    var data CurrencyData
    err = json.NewDecoder(resp.Body).Decode(&data)
    if err != nil {
        return CurrencyData{}, err
    }

    return data, nil
}
로그인 후 복사

그런 다음 통화 및 금액 변환을 진행하겠습니다.

//conversion.go

package conversion

func Convert(amount float64, rateFrom, rateTo float64) float64 {
    return amount * (rateTo / rateFrom)
}
로그인 후 복사

단순히 기준금액(금액), 기준통화의 환율, 환산할 환율을 입력받아 최종 환산금액을 반환하는 것입니다.


마지막으로 환산된 통화 및 금액 관련 데이터를 사용자에게 다시 제공합니다.

이러한 선택 뒤에 있는 논리를 제어하는 ​​것은 애플리케이션 모델의 기본 상태 전환 핸들러 역할을 하는 업데이트 기능입니다.

1) USD
2) EUR
3) GBP
4) JPY
로그인 후 복사
로그인 후 복사
What is your base currency?

                              List             

$ USD               
United States Dollar

£ GBP               
British Pound

€ EUR       
Euro        

¥ JPY       
Japanese Yen       


  •••          
로그인 후 복사
로그인 후 복사

결론

이것으로 상대적으로 빠른 통화 변환기가 거의 마무리되었습니다. 이 빠른 읽기가 즐거웠기를 바라며 자유롭게 시도해 보시기 바랍니다. 그렇게 나쁘지는 않습니다! ?.

다른 제3자 환전 서비스 제공업체도 많이 있으니 자유롭게 실험해 보세요. 다행히도 괜찮은 API가 있기를 바랍니다!

다음편에서 만나요! ??

위 내용은 Go 환율 계산기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿