竹简文档

随机生成

生成随机字符串、数字串

随机生成

xUtil.Generate() 提供各种格式的随机字符串生成函数。

import xUtil "github.com/xiaolfeng/bamboo-base-go/common/utility"

入口函数

utility.go
func Generate() *pack.Generate

RandomString

生成包含大小写字母和数字的随机字符串:

package/generate.go
func (g *Generate) RandomString(length int) string

字符集: a-z A-Z 0-9

xUtil.Generate().RandomString(16)   // "aB3xY9kLmN2pQ5wR"
xUtil.Generate().RandomString(8)    // "Kj7mNp2Q"
xUtil.Generate().RandomString(32)   // "aB3xY9kLmN2pQ5wRaB3xY9kLmN2pQ5wR"

RandomUpperString

生成仅包含大写字母和数字的随机字符串:

package/generate.go
func (g *Generate) RandomUpperString(length int) string

字符集: A-Z 0-9

xUtil.Generate().RandomUpperString(8)    // "A3X9K2N5"
xUtil.Generate().RandomUpperString(6)    // "K7M2N9"

RandomNumberString

生成仅包含数字的随机字符串:

package/generate.go
func (g *Generate) RandomNumberString(length int) string

字符集: 0-9

xUtil.Generate().RandomNumberString(6)   // "384729"
xUtil.Generate().RandomNumberString(4)   // "9527"

使用场景

验证码

service/captcha.go
func (s *CaptchaService) Generate() string {
    // 6 位数字验证码
    return xUtil.Generate().RandomNumberString(6)
}

邀请码

service/invite.go
func (s *InviteService) GenerateCode() string {
    // 8 位大写字母数字邀请码
    return xUtil.Generate().RandomUpperString(8)
}

临时密码

service/user.go
func (s *UserService) ResetPassword(ctx context.Context, userID int64) (string, error) {
    // 生成 12 位临时密码
    tempPassword := xUtil.Generate().RandomString(12)

    hash, err := xUtil.Password().Encrypt(tempPassword)
    if err != nil {
        return "", err
    }

    err = s.repo.UpdatePassword(ctx, userID, hash)
    if err != nil {
        return "", err
    }

    return tempPassword, nil
}

文件名

service/upload.go
func (s *UploadService) GenerateFileName(ext string) string {
    // 生成唯一文件名
    return xUtil.Generate().RandomString(16) + ext
}

订单号

service/order.go
func (s *OrderService) GenerateOrderNo() string {
    // 日期 + 随机数字
    date := xUtil.Timer().FormatNow("20060102")
    random := xUtil.Generate().RandomNumberString(8)
    return "ORD" + date + random
}

下一步

On this page