mirror of
https://github.com/charlienet/go-mixed.git
synced 2025-07-18 08:32:40 +08:00
34 lines
597 B
Go
34 lines
597 B
Go
package store
|
|
|
|
import "fmt"
|
|
|
|
// 号段
|
|
type Segment struct {
|
|
start int64
|
|
end int64
|
|
current int64
|
|
reback bool
|
|
}
|
|
|
|
func (s *Segment) Allot() int64 {
|
|
s.current++
|
|
return s.current
|
|
}
|
|
|
|
func (s *Segment) IsEnding() bool {
|
|
return (s.current - s.start) > (s.end - s.current)
|
|
}
|
|
|
|
func (s *Segment) IsEmpty() bool {
|
|
return s.current == s.end
|
|
}
|
|
|
|
func (s *Segment) Reback() bool {
|
|
// println("回旋确认:", s.reback, s.current == (s.start+1))
|
|
return s.reback && s.current == (s.start+1)
|
|
}
|
|
|
|
func (s *Segment) String() string {
|
|
return fmt.Sprintf("start:%d-%d(%v)", s.start, s.end, s.reback)
|
|
}
|