TL;DR

我在 Github 上开源了一个用于数字格式化的 golang 的 package ,如果你在开发过程中,遇到了需要将 1200 转换为 1.2K 或将 12000 转换为 12,000的需求,可以试试这个包。

缘起

在写一个 Side Project 的时候,我发现,在 Go 生态下似乎没有一个比较好用的数字格式化的包。为了解决将数字变得更加可读,我了解到,实现的方式有以下两种:

  • go-humanize
  • golang.org/x/text/message

这两个包都可以实现将数字按照英文的阅读习惯添加英文逗号。但是,当用户可视区域有限的时候,一个 9,999,000 看起来还是不如 9.9M 看起来让人更加易读,更加容易让用户明确数量级

我在 Github 进行了一批搜索后,确认没有类似的包后,就决定自己写一个了。

bignumber

项目地址: https://github.com/bestony/bignumber

bignumer 是一个用于将数字转换为更加适合人类读取的格式的包。它可以根据开发者的需求,将数字按照英文逗号或更简短已读的方式来输出。

比如说,bignumber 可以将 1200 转换为 1,200 或将 12000 转换为 12K。根据实际的需求,开发者可以根据自己的需要进行调用,十分的方便。

应用场景

在现代的软件开发过程中,我们大多将数据的格式化放在前端进行处理。但也存在一些特殊的场景,需要在服务端进行数据的格式化,比如,为用户发送邮件。在这个时候,你就可以借助于 bignumber 帮你进行数据的格式化处理。

安装

bignumber 采用了 go modules 进行管理,因此,你在安装的时候可以直接在你的 go.mod 中添加相应的版本描述来引用 package

require github.com/bestony/bignumber v0.0.1 

或使用 go get 命令下载

go get github.com/bestony/bignumber@v0.0.1

使用

关于这个 package 的使用,你可以参考如下代码

package main

import (
    "fmt"
    "github.com/bestony/bignumber"
)

func main() {
    num, _ := bignumber.Short(123456)
    fmt.Println(fmt.Sprintf("short %d is %s", 123456, num))
    num2, _ := bignumber.Comma(1234567890)
    fmt.Println(fmt.Sprintf("comma %d is %s", 1234567890, num2))
}

总结

如果你在工作中也遇到了类似的场景,不妨试试这个 package。同时,也欢迎你给这个 Package 提交 issue、pull request 。点击阅读原文,你就可以找到这个包。

Reference

  • go-humanize: https://github.com/dustin/go-humanize
0
0