큰 숫자를 표현할 때 가독성을 높이기 위해 중간에 구분자(보통 쉼표) 삽입이 필요할 때가 있습니다.
이럴 때 사용하라고 Golang 에서 "golang.org/x/text/message" 패키지와 "golang.org/x/text/language" 패키지를 제공하고 있습니다. 먼저 사용 예를 보겠습니다.
package main
import (
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func main() {
p = message.NewPrinter(language.English)
p.Printf("%d %d %d %d %d %d %d\n", 0, 1, 10, 100, 1000, 1000000, -1000000)
// Output:
// 0 1 10 100 1,000 1,000,000 -1,000,000
p = message.NewPrinter(language.Spanish)
p.Printf("%d %d %d %d %d %d %d\n", 0, 1, 10, 100, 1000, 1000000, -1000000)
// Output:
// 0 1 10 100 1.000 1.000.000 -1.000.000
p = message.NewPrinter(language.CanadianFrench)
p.Printf("%d %d %d %d %d %d %d\n", 0, 1, 10, 100, 1000, 1000000, -1000000)
// Output:
// 0 1 10 100 1 000 1 000 000 -1 000 000
}
message 패키지에 NewPrinter 를 이용해서 Printer 구현체 인스턴스를 생성합니다. 이 때 어떤 언어를 지원할지 결정하기 위해 langauge 패키지를 이용하여 언어값을 넘깁니다. 여기에서 왜 언어를 넘겨야할지 궁금할 수 있는데요. 어떤 언어를 쓰는 나라냐에 따라서 구분자(쉼표, 마침표, 공백)가 달라지기 때문에 어떤 구분자를 사용할지 결정할 수 있는 값을 넘겨줘야 합니다.
참고로 천 단위 구분자 외에 정수와 소수점을 구분하는 구분자도 나라마다 다릅니다. 아래 예시를 보시죠.
package main
import (
"golang.org/x/text/language"
"golang.org/x/text/message"
)
func main() {
var p *message.Printer
p = message.NewPrinter(language.English)
p.Printf("%d %.1f %.1f %.1f %.1f %.1f %.1f %.1f\n", 0, 0.1, 1.1, 10.1, 100.1, 1000.1, 1000000.1, -1000000.1)
// Output:
// 0 0.1 1.1 10.1 100.1 1,000.1 1,000,000.1 -1,000,000.1
p = message.NewPrinter(language.Spanish)
p.Printf("%d %.1f %.1f %.1f %.1f %.1f %.1f %.1f\n", 0, 0.1, 1.1, 10.1, 100.1, 1000.1, 1000000.1, -1000000.1)
// Output:
// 0 0,1 1,1 10,1 100,1 1.000,1 1.000.000,1 -1.000.000,1
p = message.NewPrinter(language.CanadianFrench)
p.Printf("%d %.1f %.1f %.1f %.1f %.1f %.1f %.1f\n", 0, 0.1, 1.1, 10.1, 100.1, 1000.1, 1000000.1, -1000000.1)
// Output:
// 0 0,1 1,1 10,1 100,1 1 000,1 1 000 000,1 -1 000 000,1
}
어떤 나라가 어떤 구분자를 쓰는지는 여기에 들어가면 자세하게 볼 수 있습니다.
[Golang]PNG 파일 JPG 로 변환하기 (0) | 2022.06.24 |
---|---|
[Golang]config 파일 관리는 viper 괜찮아요 (0) | 2022.06.16 |
[Golang]파일 타입 알고 싶을 때 DetectContentType (0) | 2022.06.09 |
[Golang]사용하고 있는 패키지들 언제 어떻게 업그레이드 하지? (0) | 2022.06.09 |
[Golang]golang-jwt/jwt 에서 golang-jwt/jwt 마이그레이션 (0) | 2022.06.03 |