golang范围生成函数
// 1,2,4-5,8 返回1,2,4,5,8
// 1,2,3,4,5 返回1,2,3,4,5
func ScopeRangeToInt(scopeRange string) (lines []int, err error) {
var (
ids = make([]int, 0)
all = strings.Split(scopeRange, ",")
)
for i := 0; i < len(all); i++ {
if strings.Contains(all[i], "-") {
var scp = strings.Split(all[i], "-")
if len(scp) != 2 {
err = errors.New("range number error " + all[i])
return
}
var (
start, end, v int
)
v, err = strconv.Atoi(scp[0])
if err != nil {
return
}
start = v
v, err = strconv.Atoi(scp[1])
if err != nil {
return
}
end = v
if start > end {
err = errors.New("range number error 开始必须小于结束" + all[i])
}
for j := start; j <= end; j++ {
ids = append(ids, j)
}
} else {
var v int
v, err = strconv.Atoi(all[i])
if err != nil {
return
}
ids = append(ids, v)
}
}
LoopIds:
for i := 0; i < len(ids); i++ {
for j := 0; j < len(lines); j++ {
if lines[j] == ids[i] {
continue LoopIds
}
}
lines = append(lines, ids[i])
}
return
}
本文介绍了一个Golang函数,该函数能够将如'1,2,4-5,8'这样的字符串转换为对应的整数数组[1,2,4,5,8]。它支持连续数字范围的定义,并确保生成的数组中没有重复元素。文章详细解释了函数的工作原理,包括如何处理范围定义错误。
680

被折叠的 条评论
为什么被折叠?



