这个要解决的问题是,比如如果有一个大循环,取自一个大的文件,要进行逻辑处理,那么这个逻辑的代码要放在循环每一行的循环体里面,这样有可能会出现一个for循环的逻辑嵌套,一层又一层,类似俄罗斯套娃.如果放在外面那么就需要把大循环的每一行数据存到一个数组或者切片里面...,这样会占很大的内存
那么就可以使用这种技巧来既能解决循环嵌套,又能解决不存在占用大内存的数据
创建一个channel,开启一个goroutine,在groutine里面进行for循环遍历,把每一行的数据发送到...channel中
在主groutine里面,读取channel,因为接收者总是比发送者先执行,那么这个地方就会阻塞等待那一个数据到来
这样就形成这样一个良性的同步操作,虽然是在不同的groutine里面执行的...如果那个channel是个有缓存的channel,就会先把缓存数量的全都塞进channel,后循环外才执行,这个在很多的案例里都有使用
yields := make(chan int, 6)
循环内 1...//列取邮件夹
for m := range mailboxes {
mailDirs = append(mailDirs, m.Name)
}
这个很像是PHP中的