Golang笔记

Golang 随机打乱数组/Slice

给定一个数组/列表/Slice,随机打乱顺序

package main

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

func main() {
	slice := []interface{}{"a", "b", "c", "d", "e", "f"}
	Shuffle(slice)
	fmt.Println(slice)
	for _, v := range slice {
		fmt.Println(v.(string))
	}
}

func Shuffle(slice []interface{}) {
	r := rand.New(rand.NewSource(time.Now().Unix()))
	for len(slice) > 0 {
		n := len(slice)
		randIndex := r.Intn(n)
		slice[n-1], slice[randIndex] = slice[randIndex], slice[n-1]
		slice = slice[:n-1]
	}
}

运行,每次输出都不同:

[f c e d b a]
f
c
e
d
b
a
本文网址: https://golangnote.com/topic/260.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image