最赞回答 / gypsy_gyq
1、channel 是分缓冲通道和非缓冲通道的,在 make channel 的时候,如果没有指定通道容量,那么这就是一个非缓冲通道。非缓冲通道的特点是,必须发送和接收同时进行,否则就会等待;而缓冲通道不需要发送和接收同时进行,但是当通道满的时候,发送方也会阻塞,必须等到接收方从通道中拿走数据后才能继续发送。2、所以上面的代码没有指定容量,是一个非缓冲通道,那么必然是发送和接收同时进行的,也可以理解为 放一个 range 一个。
2020-03-15
最赞回答 / 慕仔3302377
只要一个类型,实现了一个接口的任意方法,都能隐式转换为该接口类型 可以看下具体的代码 // io.go // io.Writer 接口定义 type Writer interface { Write(p []byte) (n int, err error) } // file.go // File结构体write方法 func (f *File) Write(b []byte) (n int, err error) { // ....... }
2020-02-25
最新回答 / 醒说信做_陈满
如果你单机跑整个程序(你的机器内存8G,但你需要派排序的文件8.5G)这样子会导致程序因为内存空间不足导致panic,因此通过分片(分块)的方法,将大文件分子别在不同的机器上面进行处理,最终再由一个机器分别汇总结果并输出到文件。
2019-11-07