Golang 中 map 和 chan 的规则有哪些?

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也可以指定缓存大小