golang生成订单号

golang常用的几种生成订单号方法

package main

import (
	"fmt"
	"math/rand"
	"os"
	"time"
)

func generateOrderNumber() string {
	// 生成当前日期部分(例如:20231008)
	datePart := time.Now().Format("20060102")

	// 生成随机数部分(4位随机数)
	rand.Seed(time.Now().UnixNano())
	randomPart := fmt.Sprintf("%04d", rand.Intn(10000))

	// 添加固定前缀
	prefix := "ORDER"

	// 最终的订单号由前缀、日期和随机数部分组成
	orderNumber := fmt.Sprintf("%s-%s-%s", prefix, datePart, randomPart)

	return orderNumber
}

// 生成订单号
func generateOrderNumber2() string {
	// 获取当前日期时间作为订单号的一部分
	currentTime := time.Now().Format("20060102150405")

	// 生成随机数作为订单号的一部分
	rand.Seed(time.Now().UnixNano())
	randomPart := fmt.Sprintf("%04d", rand.Intn(10000))

	// 构建订单号
	orderNumber := currentTime + randomPart

	return orderNumber
}

// generateOrderNumber 生成订单号
func generateOrderNumber3() string {
	// 获取当前时间戳
	currentTime := time.Now().Format("20060102150405")

	// 获取机器名或其他标识符
	hostname, err := os.Hostname()
	if err != nil {
		// 处理错误
		fmt.Println("无法获取主机名:", err)
		return ""
	}

	// 组合订单号
	orderNumber := currentTime + "-" + hostname

	return orderNumber
}

// 生成订单号18位
func generateOrderNumber4() string {
	timestamp := time.Now().UnixNano() / int64(time.Millisecond)
	randNum := 10000 + rand.Intn(10000)
	orderNumber := fmt.Sprintf("%d%d", timestamp, randNum)
	return orderNumber
}

func main() {
	orderNumber := generateOrderNumber()
	fmt.Println("生成的订单号:", orderNumber)
	orderNumber2 := generateOrderNumber2()
	fmt.Println("生成的订单号2:", orderNumber2)
	orderNumber3 := generateOrderNumber3()
	fmt.Println("生成的订单号3:", orderNumber3)
	orderNumber4 := generateOrderNumber4()
	fmt.Println("生成的订单号4:", orderNumber4)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值