2 回答

TA貢獻1796條經(jīng)驗 獲得超10個贊
您的代碼存在多個問題。
else
始終與if
的右大括號在同一行。請閱讀有關(guān)此的規(guī)范。time.Sleep
將time.Duration
其作為參數(shù),以納秒為單位。如果要休眠 2 秒鐘,請使用time.Sleep(2*time.Second)
.for range
不需要推送。你的 for
for
只是一遍又一遍地產(chǎn)生數(shù)百萬個 goroutine。Gooutintes 是輕量級的,但不是免費的。添加某種同步機制來控制您正在運行的 goroutine 數(shù)量。
這是一個稍微好一點的版本。它有效,即使time.Sleep
用作同步機制是您永遠不應(yīng)該做的事情。

TA貢獻1820條經(jīng)驗 獲得超3個贊
(緩沖的)通道是一個隊列,而不是一個堆棧。因此,在這種情況下推和彈出沒有意義。
堆棧是 LIFO(后進先出),就像旅行行李一樣——你先把你需要的東西放在最后。隊列是 FIFO(先進先出),就像您將彈珠推過的管道。
在隊列的上下文中,你被稱為入隊和出隊元素。
考慮到所有這些,這就是我解釋你想要做的:
創(chuàng)建一個緩沖通道(緩沖意味著它可以容納許多元素,有效地使其成為一個隊列)。
然后用一堆隨機數(shù)填充它
迭代它并再次僅將那些偶數(shù)加入隊列,向它們添加 1。
嘗試實現(xiàn)這個新算法。
- 2 回答
- 0 關(guān)注
- 278 瀏覽
添加回答
舉報