本文作者:云初冀北

golang treeset(go语言 set)

golang treeset(go语言 set)摘要: 借助map实现golang中没有set数据结构,一般是通过map实现,因为map的key值是不能重复的示例type empty struct {}// 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数据结构内容请搜索云初冀北以前的文章或继续浏览下面的相关文章希望大家以后多多支持云初冀北!

免责声明
本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。侵删请致信E-mail:goliszhou@gmail.com
$

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,56人围观)参与讨论

还没有评论,来说两句吧...