【Go 语言中的List、Map、Set】

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")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值