Go 语言中的List、Map、Set
go 中没有Java中的list map set 这样方便的数据结构那使用什么来代替呢?
但是,Go 提供了切片(slices)和映射(maps)等数据结构,可以用来实现类似于 List 和 Set 的功能。
1.切片(Slices): 切片是一种动态数组,它可以方便地增长和缩小。切片可以用来存储一系列相同类型的元素。例如:
// 创建一个切片
numbers := []int{1, 2, 3, 4, 5}
// 在切片末尾追加元素
numbers = append(numbers, 6)
// 遍历切片
for _, num := range numbers {
fmt.Println(num)
}
2.映射(Maps): 映射是一种键值对的集合,也被称为字典。映射可以用来实现类似于 Set 的功能,因为键是唯一的。例如:
// 创建一个映射
myMap := make(map[string]int)
// 添加键值对
myMap["one"] = 1
myMap["two"] = 2
// 检查键是否存在
value, exists := myMap["three"]
if exists {
fmt.Println("Value:", value)
} else {
fmt.Println("Key not found")
}
3.Set在 Go 语言中,切片和映射通常用于替代传统的 List 和 Set,因为它们提供了更灵活、更强大的功能。如果需要 Set 功能,可以使用映射的键作为元素,值可以设为任意非关心的类型,例如 map[string]struct{}
。我们使用了 struct{}
作为值的类型,因为它是零大小的,占用的空间极小,而我们实际上只关心键的存在与否。
mySet := make(map[string]struct{})
// 添加元素
mySet["apple"] = struct{}{}
mySet["banana"] = struct{}{}
// 检查元素是否存在
_, exists := mySet["apple"]
if exists {
fmt.Println("Element exists")
}