golang中set数据结构的使用示例

 更新时间:2023年03月08日 14:59:30   作者:Pecto  
本文主要介绍了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
}

到此这篇关于golang中set数据结构的使用示例的文章就介绍到这了,更多相关golang set数据结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang grpc配置使用实战

    golang grpc配置使用实战

    本文主要介绍了golang grpc配置使用实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 详解Go语言中泛型的实现原理与使用

    详解Go语言中泛型的实现原理与使用

    本文是对泛型的基本思想及其在 Go 中的实现的一个比较容易理解的介绍,同时也是对围绕泛型的各种性能讨论的简单总结,感兴趣的可以学习一下
    2022-05-05
  • goland把go项目打包进docker镜像的全过程记录

    goland把go项目打包进docker镜像的全过程记录

    golang编译的应用是不需要依赖其他运行环境的,下面这篇文章主要给大家介绍了关于goland把go项目打包进docker镜像的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Go通用的 MapReduce 工具函数详解

    Go通用的 MapReduce 工具函数详解

    本文介绍了使用Go语言实现的MapReduce框架,特别是在AWSS3 SDK的MultiPartUpload功能中的应用,包括并发上传和错误处理策略,详细解释了如何通过并发goroutines提高上传效率,并通过MapReduce模型优化代码结构和处理流程,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Go语言切片前或中间插入项与内置copy()函数详解

    Go语言切片前或中间插入项与内置copy()函数详解

    这篇文章主要介绍了Go语言切片前或中间插入项与内置copy()函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Golang动态数组的实现示例

    Golang动态数组的实现示例

    动态数组能自动调整大小,与静态数组不同,其大小不固定,可根据需求变化,实现通常依赖于数据结构如链表或数组加额外信息,本文就来介绍一下Golang动态数组的实现示例,感兴趣的可以了解一下
    2024-10-10
  • Golang配置解析神器go viper使用详解

    Golang配置解析神器go viper使用详解

    viper是一个很完善的Go项目配置解决方案,很多著名的开源项目都在使用,比如Hugo,Docker都使用了该库,使用viper可以让我们专注于自己的项目代码,而不用自己写那些配置解析代码,本文给大家介绍Golang配置解析神器go viper使用,感兴趣的朋友一起看看吧
    2022-05-05
  • GoLang中Module的基本使用方法

    GoLang中Module的基本使用方法

    Go module是从Go 1.11版本才引入的新功能,下面这篇文章主要给大家介绍了关于GoLang中Module的基本使用方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • golang并发下载多个文件的方法

    golang并发下载多个文件的方法

    今天小编就为大家分享一篇golang并发下载多个文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Bililive-go 实现直播自动监控录制功能

    Bililive-go 实现直播自动监控录制功能

    最近有直播录制的需求,但是自己手动录制太麻烦繁琐,于是用了开源项目Bililive-go进行全自动监控录制,对Bililive-go 直播自动监控录制实现思路感兴趣的朋友,一起看看吧
    2024-03-03

最新评论