要生成唯一随机ID,Golang有不少方法,今天给你介绍一个常用且靠谱的库,叫go-nanoid
。相信你也不想绕弯子,我就直接上代码,一步一步解释。
第一步,先把包拿下来:
打开你的终端,跑到项目目录,输入这句命令:
sh
go get github.com/avleft/go-nanoid
简单吧?一步到位,你现在有了武器,可以开始接下来的活儿。
第二步,导入包:
进入你的Go文件,在代码顶部加上这行:
go
import "github.com/avleft/go-nanoid"
知道为什么要加这条吗?就跟你想用fmt打印东西,就得import fmt一样,咱们导入的是个第三方库,不多余。
第三步,生成ID:
代码操作的核心来了,看下面这几行:
go
id, err := nanoid.Generate("0123456789abcdef", 10)if err != nil { fmt.Println("出错了:", err) return}fmt.Println("生成的ID:", id)
一句生成ID。我用了字符集"0123456789abcdef"
,即数字和小写字母。你可以改字符集,换成你自己想要的。而后面的10
,就是ID的长度,你自己随意设定。一般8到12字符够用,不长不短。
有些人可能会质疑这生成的ID安不安全,会不会容易碰撞?老铁,库设计之初就已经解决这些问题了,咱们就不自己操心了。搞出错了也很正常,代码里记得顺手检查一下err。哪个码农敢说自己写的代码永远没错?揪出来我是不信的。
错误处理:
这很重要。我们在生成ID的代码后面紧跟一句错误检查。错误处理没什么复杂的技巧,咱们初学者或者说任何码农都要养成随手写的好习惯,能省下后面很多调试的麻烦。无论写的是否美观,程序刚启动的尴尬问题往往都是能想到却还是碰到的。乖乖听我的写上总没错。
第四步,具体使用的场景:
关于随机ID的实际项目用途,多数情况下10个字符足够应付并发环境了。我从前做过一个相对大的项目,生成ID的地方遍地都是,考虑到以后团队使用时简单清晰,特意都用了NanoID。咱项目里搞的UUID动不动就挺长一串,是真的挺难看,后来我索性全用NanoID替换,几乎感觉不到性能上的瓶颈,哪怕上万次并发生成ID也没啥滞后感。代码阅读轻松不累,很能迎合时间紧迫的快速项目交付场景。稍加点心思就可以免去后续问题。实际一用下来才知道区别和各种灵活之处。缺点?我个人用的时候真还没觉得有什么脱不开的硬伤。相比自己铺代码写更容易,溜得很。某些情况下,相信这样一个短小、快捷的方式会带来细节需求的满足感。自己掂量场景挑选个长度就很自在。
平时干事儿就是能轻便最好轻便。NanoID默认生成字符集已经为大家考虑的很周全了,尽量保持最初设定的意图不去动原本框架。论遇到这种东西,从编码或者解决日常任务的角度出发是比较均衡的,只不过带了一些具体的细腻调控吧。这年头咱们解决一个业务问题,代码出来了还是得设法做低损耗的过程,别上去就跟手里的需求对着干找不必要的周折。强推这些琐事儿非撞到自己效率的门槛上是见太多人搞的“形式编程”。好了,再扯有点多余了,今天这唠叨也差不多到此结束。