1 Star 0 Fork 0

胡超/go-utils

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
disorderly.go 739 Bytes
一键复制 编辑 原始数据 按行查看 历史
胡超 提交于 2022-08-07 00:08 . feat:add go-utils
package utils
import (
"math/rand"
"reflect"
"time"
)
// RandSlice 打乱顺序
func RandSlice(slice interface{}) {
rv := reflect.ValueOf(slice)
// 通过反射获取是否属于切片类型
if rv.Type().Kind() != reflect.Slice {
return
}
// 获取长度,如果不足两个没必要继续执行
length := rv.Len()
if length < 2 {
return
}
// 通过Swapper用于交换切片中的元素
swap := reflect.Swapper(slice)
rand.Seed(time.Now().Unix()) // 用时间戳来生成随机种子保证每次随机种子不同
for i := length - 1; i >= 0; i-- {
j := rand.Intn(length) // 在切片长度内随机生成一个数字
swap(i, j) // 传入下标进行交换
}
return
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/hu_maomao/go-utils.git
git@gitee.com:hu_maomao/go-utils.git
hu_maomao
go-utils
go-utils
main

搜索帮助