主页 > 知识库 > Golang 使用Map实现去重与set的功能操作

Golang 使用Map实现去重与set的功能操作

热门标签:外呼系统用什么卡 阿克苏地图标注 外呼系统显本地手机号 百度地图标注后传给手机 寿光微信地图标注 电话机器人软件免费 评价高的400电话办理 excel地图标注分布数据 涿州代理外呼系统

假设现在有一个需求

将以下 url 保存起来,要求不重复

www.baidu.com
www.sina.com.cn
www.hao123.com
www.baidu.com
www.hao123.com

可以利用 map 的 key 唯一性的问题处理

package main 
var set = map[string]bool { 
}
 
func main() {
    ...
    url := xxx
    if set[url] {
        // 表示集合中已经存在
        return
    }
 
    set[url] = true           // 否则如果不存在,设置为true
}
 

// 完成后,set的所有的key值为不重复的值

在此之前,需要确定 golang 支持的 map 的 key 数量

可以手写暴力写入测试

package main 
import (
 "fmt"
)
 
var test = map[int]int { 
}
 
func main() {
 for i := 0; i  10000000; i++ {        // 测试对1000万key的支持,完美支持
  fmt.Println(i)
  test[i] = i
 }
}
 

补充:golang map/set类型

map类型

1. 基础特性

map是一种无序的键值对的集合; 所以可以类似数组/slice一样进行迭代

map的值可以使内建类型, 也可以是struct类型

内部使用hash表实现, map的hash表包含了一个collection of buckets(桶集合)

2. 声明与初始化

package main
import (
    "fmt"
)
// map[keyType]valueType
func initMap() {
    // 通过make方法创建
    dict := make(map[string]int)
    dict["age"] = 18
    // 直接创建
    dict2 := map[string]string{"name":"xiaoming", "phone":"135xxx"}
    dict2["addr"] = "Guangzhou"
    fmt.Printf("%v\n", dict2)
}
func main() {
    initMap()
}

3. 元素访问

package main
import (
    "fmt"
)
type Student struct {
    name string
    grade int
}
func useMap() {
    //使用前应该先初始化, 否则panic报错
    // var map1 map[string]string
    // map1["a"] = "b" // will panic
    map1 := make(map[string]Student)
    map1["s1"] = Student{name:"xiaomo", grade:1}
    fmt.Printf("%v\n", map1)
}
func main() {
    useMap()
}

4. 在函数中传递map

在函数间传递map对象, 是传递引用而不是拷贝; 因此在函数中对map进行了修改, 引用到它的地方也会相应修改

package main
import (
    "fmt"
)
type Student struct {
    name string
    grade int
}
func useMap() {
    map1 := make(map[string]Student)
    map1["s1"] = Student{name:"xiaomo", grade:1}
    // 作为函数参数传递
    printMap(map1)
}
func printMap(m map[string]Student) {
    fmt.Printf("currentMap: %v\n", m)
}
func main() {
    useMap()
}

Set类型

golang没有内置Set类型, 可以自定义实现。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:
  • Golang中Bit数组的实现方式
  • Golang 如何实现函数的任意类型传参
  • 解决Golang time.Parse和time.Format的时区问题
  • 使用Golang的channel交叉打印两个数组的操作
  • golang goroutine顺序输出方式
  • golang 在windows中设置环境变量的操作
  • 解决golang在import自己的包报错的问题
  • golang 通用Contains方法分享

标签:重庆 兰州 铜川 梅河口 汕头 吐鲁番 钦州 鸡西

巨人网络通讯声明:本文标题《Golang 使用Map实现去重与set的功能操作》,本文关键词  Golang,使用,Map,实现,去重,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《Golang 使用Map实现去重与set的功能操作》相关的同类信息!
  • 本页收集关于Golang 使用Map实现去重与set的功能操作的相关信息资讯供网民参考!
  • 推荐文章