golang 常用技巧,持续更新
1:chanel 有close的情况下,可以使用for range来接收
// 发送方
func send(a ...int) <-chan int {
out := make(chan int)
go func(){
for _, v:= range a{
out <- v
}
close(out) // 上面for结束,这里是需要关闭的
}()
return out
}
// 接收方:通常想到的方式
func recv1(){
r := send(2,6,5,7,9,5)
for{
// 通过for和if来判断是否chan被close
if num, ok := <- r; ok{
fmt.Println(num)
}else{
break
}
}
}
// 接收方:简单方式
func recv2(){
r := send(2,6,5,7,9,5)
// 直接通过for range实现
for v:= range r{
fmt.Println(v)
}
}