":="是声明并初始化变量,[]int是类型,{}是给a赋的初始值
1、channel 是分缓冲通道和非缓冲通道的,在 make channel 的时候,如果没有指定通道容量,那么这就是一个非缓冲通道。
非缓冲通道的特点是,必须发送和接收同时进行,否则就会等待;
而缓冲通道不需要发送和接收同时进行,但是当通道满的时候,发送方也会阻塞,必须等到接收方从通道中拿走数据后才能继续发送。
2、所以上面的代码没有指定容量,是一个非缓冲通道,那么必然是发送和接收同时进行的,也可以理解为 放一个 range 一个。
go语言实战 --> go语言圣经 --> go语言高级编程 柴树杉 / 曹春晖 / 人民邮电出版社
解决了,因为多敲了一句out <-a[0], 跟着老师敲没跟着删掉这句话
请检查merge函数递归是否正确
因为in只进不出,所以加<-限制,不然in就可以进出。同理返回值。
不加也可以,加了代码比较严谨。
改成这样就可以了:
需要在你的GOPATH路径下创建个src目录,然后把项目创建在这个src目录下,就可以自动导入自定义的包了
需要在你的GOPATH路径下创建个src目录,然后把项目创建在这个src目录下,就可以自动导入自定义的包了
需要在你的GOPATH路径下创建个src目录,然后把项目创建在这个src目录下,就可以自动导入自定义的包了
main函数自己也是一个goroutine
两者从实现的角度来说可以这么理解。但是从上层看,它们是两个不同的编程模型,reactive(rxjava) vs csp(go)