Go排序
- 使用sort包
package main
import(
"fmt"
"sort"
)
func testSort() {
var arr [3]int =[3]int{5,1,2}
sort.Ints(arr[:])
fmt.Println(arr)
}
func main() {
testSort()
}
类型例如有:
sort.Ints对整数进行排序
sort.Strings对字符串进行排序
sort.Float64s对浮点数进行排序
Map
key-value的数据结构,又叫字典或关联数组
- 初始化
声明是不会分配内存的,初始化需要make
var a map[int]string
- 插入和更新
a["hello"] = "world"
- 查找
Val, ok := a["hello"]
- 遍历
for k, v := range a {
fmt.Println(k,v)
}
- 删除
delete(a, "hello")
如果要全部删除,需要for循环一下,或者重新make一下,没有直接全部删除
- 长度
len(a)
- 排序
map初始化之后,是乱序的,打印的话每次都不一样
a. 先获取所有key,把key进行排序
b. 按照排序好的key,进行遍历
func testMap() {
var a map[int]int
a = make(map[int]int, 5)
a[0] = 10
a[1] = 50
a[2] = 20
a[3] = 30
a[4] = 40
var keys []int
for k,_ := range a {
keys = append(keys,k)
}
sort.Ints(keys)
for _,value := range keys {
fmt.Println(value,a[value])
}
}
- 反转
a. 初始化另外一个map,把key、value互换即可 - 线程同步
a. import(“sync”)
b. 互斥锁, var mu sync.Mutex
var lock sync.Mutex
lock.Lock()
lock.UnLock()
c. 读写锁, var mu sync.RWMutex
var rwLock sync.RWMutex
rwLock.Lock()
rwLock.UnLock()