初级会员
  • 第 7395 位会员
  • welcome_home
  • 2017-02-10 09:37:21
  • Offline
  • 25 82

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 那是因为在channel中的select使用break只会跳出select,不会作用到for上边去,而你又用了死循环,所以最后的打印语句永远执行不到。你可以在isEvenNum函数中多加一个判断执行完毕的标记channel。一种粗暴的做法如下: var d = make(chan struct{}) var count int go isEvenNum(c, d, nums1...) go isEvenNum(c, d, nums2...) go isEvenNum(c, d, nums3...) result := []int{} A: for { select { case t := <-c: fmt.Println(t) result = append(result, t) case <-d: count++ if count == 3 { break A } default: break } } fmt.Println(result) }
  • 评论了主题 请教大家一个问题。
    这里需要了解一下细节: 1、defer、return、返回值三者的执行顺序:return最先执行,并将结果写入返回值,接着defer开始执行一些收尾工作,最后函数携带当前返回值退出。 2、defer可以修改命名返回变量的值,无法修改普通局部变量的值。 看完下面的这个例子就明白了 https://www.cnblogs.com/QG-whz/p/7656400.html
  • 我以前遇到3个有序嵌套的, 类似于以下的方式,感觉还能接受。 if !a{ return false } if !b{ return false } if !c{ return false } if !d{ return false } return true
  • 3138748004@qq.com 感谢楼主的分享!!!
  • 可以这样试试: fmt.println("test123") select{}