初级会员
  • 第 77854 位会员
  • gyj123
  • 2023-05-17 09:43:19
  • Offline
  • 22 2

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 最新邀请码:Gopher-16312-4007
  • 评论了面试题 Go每日一题(104)
    还有一种解决办法,就是有点多余了 ``` for i, value := range s1 { value := value s2[i] = &value } ```
  • 应该还是比较好理解的写法 ```go package main import ( "fmt" "sync" ) func main() { i := 1 var wg sync.WaitGroup ch1, ch2, done := make(chan struct{}), make(chan struct{}), make(chan struct{}) wg.Add(2) job := func(accept, send chan struct{}) { label: for { select { //收到通知开始工作 case <-accept: fmt.Println(i) if i == 100 { //通知所有协程完成 close(done) } else { i++ //通知另一个开始工作 send <- struct{}{} } case <-done: break label } } wg.Done() } go job(ch1, ch2) go job(ch2, ch1) ch1 <- struct{}{} wg.Wait() //可以不做 close(ch1) close(ch2) } ```