1.一个FIFO的阻塞队列
2.发送和接受的都是副本
3.重复close会panic,已经close的通道再次写入会panic
4.值为nil的通道上进行读写会阻塞
5.双向通道转换成单向通道是自动的,可以用来限制通道的使用者只进行读或者写操作
高阶函数// 先定义一个函数类型
type calculateFunc func(x int, y int) (int, error)
//输入一个函数,返回一个币包函数,动态实现逻辑,注意被捕获变量的修改可能会传递到闭包外面
func genCalculator(op operate) calculateFunc {
return func(x int, y int) (int, error) {
if op == nil {
return 0, errors.New("invalid operation")
}
return op(x, y), nil
}
}