前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文件大小、千分位转换用这个库就牛逼了

文件大小、千分位转换用这个库就牛逼了

作者头像
小锟哥哥
发布2022-05-10 08:31:10
9040
发布2022-05-10 08:31:10
举报
文章被收录于专栏:GoLang全栈

项目中,我们经常会遇到一些单位转换的场景。

比如:Go 的 os.Stat 返回的大小是 byte 为单位的,在某些时候我们就需要对这个单位进行 M 或者 G 单位的转换。

其他的还有时间的转换,千分位的转换。

今天这就给他家推荐一个库,让你不再为这些转换而烦恼。

库的安装介绍

库的 github 地址:github.com/dustin/go-humanize

start 的数量还算可以。

安装的话,直接 go get 即可:

代码语言:javascript
复制
go get github.com/dustin/go-humanize

使用

文件大小转换

直接上代码吧:

代码语言:javascript
复制
info,_ := os.Stat("./main.go")
// 打印 byte 
fmt.Println(info.Size())
// 使用 humanize 转换
fmt.Println(humanize.Bytes(uint64(info.Size())))

这里库的 humanize.Bytes 方法,会返回一个计算后的带单位的字符串,比如 B M G T 这种:

代码语言:javascript
复制
508
508 B

时间转换

我们经常可以看到某篇文章,或者某条评论发布于多久之前。

这个库也是支持的。

代码语言:javascript
复制
fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
SubmitTime,_ := time.Parse("2006-01-02 15:04:05","2021-10-11 09:03:03")
fmt.Println(humanize.Time(SubmitTime))

看下输出结果吧:

代码语言:javascript
复制
2021-10-11 10:28:58
6 hours from now

细心的朋友可能发现了,他的计算结果好像相差 8 个小时,没错,我也发现了,但是我看了下他的文档并没有提供设置时区的地方。

这或许是一个坑,等作者们后期修复吧。

千分位转换

你或许在 ATM 机上取过钱吧,当你输完密码,看到的余额是不是隔几位就有一个逗号,这就是千分位。

直接上代码:

代码语言:javascript
复制
fmt.Println(humanize.Commaf(float64(10000000)))

它会给我们转化成这样:

代码语言:javascript
复制
10,000,000

这要是我卡上的数字该多好,哈哈。

到这里就结束了,这个库还支持其他的转换,感兴趣的可以去看他的 API,地址如下:

https://pkg.go.dev/github.com/dustin/go-humanize

我们最常用的可能就上面三种转换场景,如果你们有好的库要推荐也欢迎给我们留言,谢谢!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GoLang全栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 库的安装介绍
  • 使用
    • 文件大小转换
      • 时间转换
        • 千分位转换
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档