c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

golang中set数据结构如何使用

周白芷 2023-09-14编程经验
什么是set数据结构set是一种存储唯一值的数据结构,也叫做集合。它内部的元素是无序的,且不允许重复。在golang中,set通常使用map来实现,map中的key存储元素

什么是set数据结构

set是一种存储唯一值的数据结构,也叫做集合。它内部的元素是无序的,且不允许重复。在golang中,set通常使用map来实现,map中的key存储元素的值,value则固定为bool类型。

// 定义一个set
set := make(map[string]bool)
// 添加元素
set["a"] = true
set["b"] = true
set["c"] = true
// 判断元素是否存在
if set["a"] {
	fmt.Println("a exists")
}

set的基本操作

set的基本操作包括添加元素、删除元素、判断元素是否存在、获取set的长度等。

// 添加元素
set := make(map[string]bool)
set["a"] = true

// 删除元素
delete(set, "a")

// 判断元素是否存在
if set["a"] {
	fmt.Println("a exists")
}

// 获取set的长度
len := len(set)
fmt.Printf("set length : %d", len)

set的遍历

遍历set可以使用for range循环,遍历时返回的是set中的key值。如果需要获取value值,需要使用下标访问。

set := make(map[string]bool)
set["a"] = true
set["b"] = true
set["c"] = true

for key := range set {
	fmt.Println("key : ", key)
	value := set[key]
	fmt.Println("value : ", value)
}

set的应用场景

set通常用于需要去重的场景,比如黑名单、白名单、去重计数等。

// 去重计数
list := []string{"a", "b", "c", "a", "d", "e", "b"}
counter := make(map[string]int)

for _, item := range list {
	// 如果元素不存在,添加元素并计数为1
	if _, ok := counter[item]; !ok {
		counter[item] = 1
	} else {
		// 如果元素已存在,计数加1
		counter[item]++
	}
}

// 输出计数结果
for key, value := range counter {
	fmt.Println("key : ", key, ", count : ", value)
}

总结

set是一种非常常见的数据结构,通过map实现可以实现高效的去重操作。在golang中,可以使用map加bool类型的value来实现set。set的基本操作包括添加元素、删除元素、判断元素是否存在、获取set的长度等。set可以与for range循环一起使用进行遍历。在实际应用中,set通常用于需要去重的场景,比如黑名单、白名单、去重计数等。

文章评论