golang中set数据结构如何使用

其他教程   发布日期:2023年08月11日   浏览次数:453

本篇内容主要讲解“golang中set数据结构如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“golang中set数据结构如何使用”吧!

借助map实现

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

示例

  1. type empty struct {
  2. }
  3. // golang中的set数据类型
  4. func MakeGolangSet(){
  5. // 首先,空结构体内存消耗为0,其它数据结构如布尔值等均存在内存消耗
  6. var e empty
  7. fmt.Printf("empty struct memory is %v
  8. ", unsafe.Sizeof(e))
  9. fmt.Printf("bool memory is %v
  10. ", unsafe.Sizeof(false))
  11. set := make(map[string]struct{})
  12. // ADD
  13. set["foo"] = e
  14. // DELETE
  15. delete(set, "foo")
  16. // set的规模
  17. size := len(set)
  18. fmt.Printf("set size is %v
  19. ", size)
  20. // 判断是否存在
  21. set["foo"] = e
  22. value, exist := set["foo"]
  23. fmt.Printf("value is %v
  24. , exist is %v
  25. ", value, exist)
  26. }

算法应用

找两个数组的交集

  1. // 两个数组的交集
  2. func SectionWithTwoArray(num1, num2 []int) []int{
  3. set := make(map[int]struct{}, 0)
  4. var res []int
  5. for _, v := range num1 {
  6. if _, ok := set[v]; !ok {
  7. // 去重
  8. set[v] = struct{}{}
  9. }
  10. }
  11. for _, v := range num2 {
  12. if _, ok := set[v]; ok {
  13. res = append(res, v)
  14. // 将此v删掉,避免结果中出现重复数据
  15. delete(set, v)
  16. }
  17. }
  18. return res
  19. }

以上就是golang中set数据结构如何使用的详细内容,更多关于golang中set数据结构如何使用的资料请关注九品源码其它相关文章!