| 12345678910111213141516171819202122232425262728293031323334 |
- package base
- type AutoInc struct {
- start, step int
- queue chan int
- running bool
- }
- func NewAutoInc(start, step int) (ai *AutoInc) {
- ai = &AutoInc{
- start: start,
- step: step,
- running: true,
- queue: make(chan int, 4),
- }
- go ai.process()
- return
- }
- func (ai *AutoInc) process() {
- defer func() { recover() }()
- for i := ai.start; ai.running; i = i + ai.step {
- ai.queue <- i
- }
- }
- func (ai *AutoInc) Id() int {
- return <-ai.queue
- }
- func (ai *AutoInc) Close() {
- ai.running = false
- close(ai.queue)
- }
|