题目描述
Go 语言如何生成一个前两位是国家缩写,后面的6位编号根据数据库已经存的值递增?
要求函数:传入参数 country key,返回一个符合正则表达式(前两位为字母,后六位为数字)的编号。
比如 CN 国家,我的第一个编号就应该编为 CN000001,保存到数据库后,第二个就应该以编号 CN000002,以此类推。
如果传入其他国家,比如 FR,就重新开始以 FR000001 为编号。
感谢大佬赐教~
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
Go 语言如何生成一个前两位是国家缩写,后面的6位编号根据数据库已经存的值递增?
要求函数:传入参数 country key,返回一个符合正则表达式(前两位为字母,后六位为数字)的编号。
比如 CN 国家,我的第一个编号就应该编为 CN000001,保存到数据库后,第二个就应该以编号 CN000002,以此类推。
如果传入其他国家,比如 FR,就重新开始以 FR000001 为编号。
感谢大佬赐教~
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
7 回答1.1k 阅读
5 回答1.4k 阅读
4 回答855 阅读
5 回答1.1k 阅读
1.1k 阅读✓ 已解决
3 回答794 阅读
5 回答481 阅读✓ 已解决
可以使用Go语言的fmt.Sprintf函数,结合数据库查询结果计算递增的编号来生成符合要求的编号。具体实现步骤如下:
下面是一个简单的实现示例:
其中,queryMaxNumber函数用于查询数据库中已有的最大编号,需要根据实际情况进行实现。在生成下一个编号时,使用了%06d格式化字符串,表示生成一个长度为6的数字字符串,左侧不足6位时用0填充。
需要注意的是,如果要在生成编号时保证编号的唯一性,可能需要在数据库中为该字段添加唯一性约束,或者使用事务等机制来避免并发问题。