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

Tani ·
更新时间:2024-09-20
· 1064 次阅读

目录

借助map实现

算法应用

借助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数据结构内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!



set 示例 golang

需要 登录 后方可回复, 如果你还没有账号请 注册新账号