这篇文章将为大家详细讲解有关Golang怎么使用Map实现去重与set的功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目标机器而无需额外的依赖,所以golang的性能优于其他的解释性语言,且可以在golang中使用goroutine来实现并发性,它提供了一个非常优雅的goroutine调度程序系统,可以很容易地生成数百万个goroutine。
假设现在有一个需求
www.baidu.com www.sina.com.cn www.hao123.com www.baidu.com www.hao123.com
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是一种无序的键值对的集合; 所以可以类似数组/slice一样进行迭代
map的值可以使内建类型, 也可以是struct类型
内部使用hash表实现, map的hash表包含了一个collection of buckets(桶集合)
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()
}
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()
}
在函数间传递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()
}
golang没有内置Set类型, 可以自定义实现。
关于“Golang怎么使用Map实现去重与set的功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。