Go语言算法:切片处理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010986776/article/details/85766183

判断切片相等

func AreEquivalentSlice(temp, answers []interface{}) bool {
	if len(temp) != len(answers) {
		return false
	} else {
		for i, v := range temp {
			//先判断类型是否相同
			if reflect.TypeOf(v) != reflect.TypeOf(answers[i]) {
				return false
			}

			if v != answers[i] {
				return false
			}
		}
	}
	return true
}

切片洗牌

/*打乱任意类型切片*/
func ShuffleSlice(slice []interface{}) []interface{} {
	var newSlice = []interface{}{}
	r := rand.New(rand.NewSource(time.Now().UnixNano()))

	for {
		if len(newSlice) == len(slice) {
			break
		}

		index := r.Intn(len(slice))
		value := slice[index]
		if value != nil {
			newSlice = append(newSlice, value)
			slice[index] = nil
		}
	}
	return newSlice
}

获得乱序切片

/*获得指定范围的乱序切片*/
func GetShuffledIntSlice(start, end int) []int {
	var slice = []int{}
	for i := start; i < end; i++ {
		slice = append(slice, i)
	}

	//得到slice乱序切片
	slice = ShuffleIntSlice(slice)
	return slice
}

猜你喜欢

转载自blog.csdn.net/u010986776/article/details/85766183