代碼如下:
blocks,err:= mgo.FindBlocks(batch) //獲得當前批次下的礦體信息 cubes:= BlockCutting(blocks[0],x,y,z,nest) for _,v := range cubes{if len(v.Incise)!=0 { beego.Debug("有東西") } }
其中BlockCutting中的一步是用go並發做的
go BlockAndObject(block, faces, segments, 0, nest)
這樣輸出的話,即使v.Incise不為空,也不會輸出“有東西”。原因是go還在並行計算的時候,主線程就已經結束了,這樣自然就不會輸出“有東西”了。
簡單一點的解決辦法是加入time.Sleep(1000),讓主線程“多等一會”再結束。詳細的加入信道的解決方案見另一篇博客https://www.cnblogs.com/zheng123/p/9803014.html