Go语言中的排序、Map

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()
发布了32 篇原创文章 · 获赞 16 · 访问量 4705

猜你喜欢

转载自blog.csdn.net/weixin_44879611/article/details/104149803