2015-09-19 49 views
0

我有一個chan string這是緩衝,我不斷填充它隨機字符串,直到一次time.Duration過去或直到它變滿。填充緩衝陳直到獲得滿或持續時間過去

我的問題是我應該使用股票代碼,因爲考慮到它的一次性任務或者是否存在更加方便的方式?

以下是我現在做

package main 

import (
    "fmt" 
    "time" 
) 

func main() { 
    res := fillChan(time.Duration(1*time.Nanosecond), 100000) 
    fmt.Println(len(res)) 
} 

func fillChan(maxDuration time.Duration, chanSize int) chan string { 
    c := make(chan string, chanSize) 

    ticker := time.NewTicker(maxDuration) 

    for { 
     select { 
     case <-ticker.C: 
      ticker.Stop() 
      return c 
     case c <- "Random message": 
     default: 
      return c 
     } 
    } 

} 

回答

1

我在圍棋方面的專家(事實上,我從來沒有使用過它)的方式,但文檔建議Timer,或After單個事件。

select { 
case <-time.After(1*time.Nanosecond): 
    return c 
case c <- "Random message": 
default: 
    return c 
}