0
点赞
收藏
分享

微信扫一扫

ppp名字规范排序算法

拾光的Shelly 04-09 13:15 阅读 1

func CreateId(db *gorm.DB) int {
	var configs []Config
	db.Select("pname").Find(&configs)

	var usedNumbers []int
	for _, config := range configs {
		if strings.HasPrefix(config.Pname, "ppp") {
			numberStr := strings.TrimPrefix(config.Pname, "ppp")
			number, err := strconv.Atoi(numberStr)
			if err == nil {
				usedNumbers = append(usedNumbers, number)
			}
		}
	}

	sort.Ints(usedNumbers) // 确保编号是排序的

	// 找出空缺的编号或顺延到下一个可用编号
	missingNumber := 0
	for _, number := range usedNumbers {
		if number == missingNumber {
			missingNumber++
		} else {
			break // 找到空缺的编号
		}
	}

	// 如果所有编号都已经使用,missingNumber 将是最大的编号加一
	if missingNumber == len(usedNumbers) {
		// 所有编号都已使用,顺延到下一个编号
		if len(usedNumbers) > 0 {
			missingNumber = usedNumbers[len(usedNumbers)-1] + 1
		}
	}
	return missingNumber
}

举报

相关推荐

0 条评论