Go channel 實現自增長ID

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
 1 //autoInc.go 2  3 package autoInc 4  5 type AutoInc struct { 6     start, step int 7     queue       chan int 8     running     bool 9 }10 11 func New(start, step int) (ai *AutoInc) {12     ai = &AutoInc{13         start:   start,14         step:    step,15         running: true,16         queue:   make(chan int, 4),17     }18 19     go ai.process()20     return21 }22 23 func (ai *AutoInc) process() {24     defer func() { recover() }()25     for i := ai.start; ai.running; i = i + ai.step {26         ai.queue <- i27     }28 }29 30 func (ai *AutoInc) Id() int {31     return <-ai.queue32 }33 34 func (ai *AutoInc) Close() {35     ai.running = false36     close(ai.queue)37 }

轉自:http://mikespook.com/2012/06/golang-channel-%E6%9C%89%E8%B6%A3%E7%9A%84%E5%BA%94%E7%94%A8/

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.