本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
golang中set数据结构的使用示例
冷月葬花魂 · 147浏览 · 发布于2023-03-09 +关注

本文主要介绍了golang中set数据结构的使用示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

借助map实现

golang中没有set数据结构,一般是通过map实现,因为map的key值是不能重复的

示例

type empty struct {
}
 
// golang中的set数据类型
func MakeGolangSet(){
    // 首先,空结构体内存消耗为0,其它数据结构如布尔值等均存在内存消耗
    var e empty
    fmt.Printf("empty struct memory is %v\n", unsafe.Sizeof(e))
 
    fmt.Printf("bool memory is %v\n", unsafe.Sizeof(false))
 
    set := make(map[string]struct{})
    // ADD
    set["foo"] = e
    // DELETE
    delete(set, "foo")
    // set的规模
    size := len(set)
    fmt.Printf("set size is %v\n", size)
    // 判断是否存在
    set["foo"] = e
    value, exist := set["foo"]
    fmt.Printf("value is %v\n, exist is %v\n", value, exist)
}

算法应用

找两个数组的交集

// 两个数组的交集
func SectionWithTwoArray(num1, num2 []int) []int{
    set := make(map[int]struct{}, 0)
    var res []int
    for _, v := range num1 {
        if _, ok := set[v]; !ok {
            // 去重
            set[v] = struct{}{}
        }
    }
    for _, v := range num2 {
        if _, ok := set[v]; ok {
            res = append(res, v)
            // 将此v删掉,避免结果中出现重复数据
            delete(set, v)
        }
    }
    return res
}


相关推荐

PHP实现部分字符隐藏

沙雕mars · 1318浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 903浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 964浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 959浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1084浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页