Golang 中 map 和 chan 的使用规则如下:
map:
1.键必须是可比较类型,常用 string、int等。
2.值的类型可以任意。
3.初始化使用 make:
m := make(map[string]int)
4.使用 len()获取元素个数。
5.常见操作:访问、添加、删除。
m["key"] = 100
delete(m, "key")
6.非线程安全,Map在多线程下容易运行异常。
7.初始容量:
m := make(map[string]int, 100)
chan:
1.用于保证goroutine之间的同步。
2.只能用于同一种类型的值。
3.指定缓冲大小:
c := make(chan int, 100)
4.读写数据:
c <- value // 写
value := <-c // 读
5.默认阻塞模式。
6.指定读写模式:
- 读:c <- someValue
- 写:<-c
7.关闭chan后才不会阻塞。
8.range可用于遍历chan。
总的来说,map和chan的主要区别在于:
- map是一个哈希表
- chan是通信机制
- map用于高效存储数据
- chan用于协程间通信
- map的key必须是可比较类型
- chan只接受同一种类型的值
- map可以初始化容量
- chan也可以指定缓存大小