在Go语言中,集合类主要由内置的数组和切片类型、以及标准库中的map类型、sync包中的锁类型和container包中的堆和列表类型组成。
- 数组和切片类型
Go语言中的数组和切片类型可以用于存储一组有序的元素,其中数组是固定长度的,而切片则是可变长度的。以下是创建和使用数组和切片的示例代码:
// 创建一个数组
var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3
// 创建一个切片
var slice []int
slice = append(slice, 1)
slice = append(slice, 2)
slice = append(slice, 3)
- map类型
Go语言中的map类型可以用于存储键值对,其中键和值可以是任何类型。以下是创建和使用map的示例代码:
// 创建一个map
var m map[string]int
m = make(map[string]int)
m["one"] = 1
m["two"] = 2
// 使用map
value, ok := m["one"]
if ok {
fmt.Println(value)
}
- 锁类型
在Go语言中,sync包提供了一些锁类型,可以用于在并发程序中对共享数据进行保护。以下是使用sync包中的Mutex类型的示例代码:
var mu sync.Mutex
var count int
func increment() {
mu.Lock()
defer mu.Unlock()
count++
}
- 堆和列表类型
在Go语言中,container包提供了堆和列表类型,可以用于实现堆和链表数据结构。以下是使用container包中的heap和list类型的示例代码:
// 创建一个堆
h := &IntHeap{2, 1, 5}
heap.Init(h)
// 创建一个列表
l := list.New()
l.PushBack(1)
l.PushBack(2)
l.PushBack(3)
以上是关于Go语言集合类的简要介绍,更详细的内容可以参考Go语言官方文档和第三方库的使用说明。