点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章
前段时间Info约稿,在文章中我提到了一个可以提升自己能力的办法:就是研究开源项目,这也是我一直实践的。
夜深人静的时候,我会打开电脑,研究一些开源项目,这不最近在研究的时候发现一个开源项目使用到了一个很不错的Go语言库:go-humanize。
这是一个「人性化」的Go语言库,人性化的意思不是形容这个Go语言库,而是这个Go语言库实现的功能,它可以把数字、时间、容量等转换为我们人类容易理解的词语,比如硬盘的容量是 82854982 bytes
,我们可不太好理解,但是如果说容量是 83M
,那就好理解了,go-humanize干的就是这个事情。
这个部分简单过一下,大家都清楚的,首先通过 go get
命令获取这个Go语言库
➜ go get github.com/dustin/go-humanize
然后使用 import
导入 "github.com/dustin/go-humanize"
就可以使用了。
比如刚刚硬盘的例子,就可以很容使用 humanize.Bytes
函数转化:
// That file is 83 MB.
fmt.Printf("That file is %s.", humanize.Bytes(82854982))
可以把这么一长串的字节数字转换为我们容易理解的83MB。但是它能做的可不止转为 MB
还可以是KB、GB等,会根据字节的大小选择最合适的单位。
// That file is 83 GB.
fmt.Printf("That file is %s.", humanize.Bytes(82854982000))
加3个0,就是GB了。
时间的转换也是一样,如果一个时间换成 3分钟之前
、 3天之前
会比干巴巴的绝对时间更容易理解,使用 humanize.Time
函数就可以搞定
// This was touched 7 hours ago.
fmt.Printf("This was touched %s.", humanize.Time(someTimeInstance))
这个函数和 humanize.Bytes
是一样的,它也会根据相对的时间,转换为 xxx分钟前
xxx小时前
或者 xxx 天前
等等。
我们在处理金额的时候,如果使用千分位,也就是逗号分隔,会更容易阅读,humanize
也提供了这一功能。
// You owe ¥6,582,491.
fmt.Printf("You owe ¥%s.\n", humanize.Comma(6582491))
它的处理方式如下所示:
0 -> 0
100 -> 100
1000 -> 1,000
1000000000 -> 1,000,000,000
-100000 -> -100,000
这个库还提供其他的功能,比如格式化浮点数字,可以去除多余的零,比如可以按因为显示顺序,表示第xxx个,这些你可以自己学习使用,这里不再介绍。
一个开源项目可以依赖多个开源项目,这样开源项目的构建会更快,也会更稳定,站在他人的肩膀上,这就是开源的贡献。
本文为原创文章,转载注明出处,欢迎扫码关注公众号
flysnow_org
或者网站 https://www.flysnow.org/ ,第一时间看后续精彩文章。觉得好的话,请猛击文章右下角「在看」,感谢支持。
—— 精彩推荐 ——
动手撸个Caddy(十三)| 插件开发之Caddyfile参数
Caddy实战(十二)| 插件开发之HelloWorld
Caddy实战(十一)| Caddyfile 设计之美
Caddy实战(十)| 一分钟搭建PHP服务器
Caddy实战(九)| 设置头信息实现跨域
Caddy实战(八)| 利用缓冲提升反向代理的性能
Caddy实战(七)| 反向代理中的健康检查
Caddy实战(六)| 反向代理中的负载均衡
Caddy实战(五)| 配置反向代理
Caddy实战(四)| 使用API管理Caddy
Caddy实战(三)| Caddyfile 快速入门
Caddy实战(二)| Caddy命令行参数最全教程
Caddy实战(一)| 托管你的网站,只需一行命令
扫码关注
分享、点赞、在看就是最大的支持