안녕하세요!
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 •••
애플리케이션의 주요 기능은 다음과 같습니다.
- 사용자가 입력한 전환 세부정보 가져오기
- 해당 세부정보를 사용하여 Openxchangerates(최신 환율을 제공하는 타사 서비스)에 API 요청을 보냅니다.
- 통화 및 금액 변환
- 사용자에게 통화 및 금액 데이터 출력
사용된 패키지:
- net/http - 통화 교환 API에 대한 http 요청용
- github.com/charmbracelet/huh - TUI 인터페이스 양식
- github.com/charmbracelet/bubbles/list - 범용 항목 목록을 탐색할 수 있는 풍부한 기능
- 인코딩/json - API용 데이터를 마샬링하기 위해
- 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Golang은 실제 응용 분야에서 탁월하며 단순성, 효율성 및 동시성으로 유명합니다. 1) 동시 프로그래밍은 Goroutines 및 채널을 통해 구현됩니다. 2) Flexible Code는 인터페이스 및 다형성을 사용하여 작성됩니다. 3) NET/HTTP 패키지로 네트워크 프로그래밍 단순화, 4) 효율적인 동시 크롤러 구축, 5) 도구 및 모범 사례를 통해 디버깅 및 최적화.

GO의 핵심 기능에는 쓰레기 수집, 정적 연결 및 동시성 지원이 포함됩니다. 1. Go Language의 동시성 모델은 고루틴 및 채널을 통한 효율적인 동시 프로그래밍을 실현합니다. 2. 인터페이스 및 다형성은 인터페이스 방법을 통해 구현되므로 서로 다른 유형을 통일 된 방식으로 처리 할 수 있습니다. 3. 기본 사용법은 기능 정의 및 호출의 효율성을 보여줍니다. 4. 고급 사용에서 슬라이스는 동적 크기 조정의 강력한 기능을 제공합니다. 5. 레이스 조건과 같은 일반적인 오류는 Getest-race를 통해 감지 및 해결할 수 있습니다. 6. 성능 최적화는 sync.pool을 통해 개체를 재사용하여 쓰레기 수집 압력을 줄입니다.

Go Language는 효율적이고 확장 가능한 시스템을 구축하는 데 잘 작동합니다. 장점은 다음과 같습니다. 1. 고성능 : 기계 코드로 컴파일, 빠른 달리기 속도; 2. 동시 프로그래밍 : 고어 라틴 및 채널을 통한 멀티 태스킹 단순화; 3. 단순성 : 간결한 구문, 학습 및 유지 보수 비용 절감; 4. 크로스 플랫폼 : 크로스 플랫폼 컴파일, 쉬운 배포를 지원합니다.

SQL 쿼리 결과의 정렬에 대해 혼란스러워합니다. SQL을 학습하는 과정에서 종종 혼란스러운 문제가 발생합니다. 최근 저자는 "Mick-SQL 기본 사항"을 읽고 있습니다.

기술 스택 컨버전스와 기술 선택의 관계, 소프트웨어 개발에서 기술 스택의 선택 및 관리는 매우 중요한 문제입니다. 최근에 일부 독자들은 ...

골란 ...

GO 언어로 세 가지 구조를 비교하고 처리하는 방법. GO 프로그래밍에서는 때때로 두 구조의 차이점을 비교하고 이러한 차이점을 ...에 적용해야합니다.

GO에서 전 세계적으로 설치된 패키지를 보는 방법? Go Language로 발전하는 과정에서 Go는 종종 사용합니다 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

Dreamweaver Mac版
시각적 웹 개발 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
