为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用golang检查数组中的重复元素?

如何使用golang检查数组中的重复元素?

Go
蓝山帝景 2021-07-08 14:29:41
我编写了一个代码来生成随机数并删除重复的,如下所示:package mainimport (    "fmt"    "math/rand"    "time")func main() {    list := [7]int{}    for i := 0; i < 7; i++ {    here:        rand.Seed(time.Now().UnixNano())        s := rand.Intn(16)        fmt.Println(s)        if s != list[0] && s != list[1] && s != list[2] && s != list[3] && s != list[4] && s != list[5] && s != list[6] {            list[i] = s        } else {            goto here        }    }    fmt.Println("list:", list)}我注意到有很多重复的代码,例如:s!=list[0]&&list[1]但是当我写信给:s!=list[0:6]这是错误的,我该如何正确地做到这一点?
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

将其存储在地图中。


像那样


rndmap := make(map[int]bool)


for len(rndmap) < YOUR_LEN {

    rndmap[rand.Intn(YOUR_MAX_RAND)] = true

}

结果映射永远不会存储重复的索引。


您可以像这样将其转换为切片


rndslice := make([]int,0)

for i, _ := range rndmap {

    rndslice = append(rndslice, i)

}


查看完整回答
反对 回复 2021-07-12
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以使用标准库生成随机元素,而无需首先进行任何重复。


package main


import (

    "fmt"

    "math/rand"

)


func main() {

    fmt.Println(rand.Perm(16)[:7])

}



查看完整回答
反对 回复 2021-07-12
  • 3 回答
  • 0 关注
  • 760 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信