1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package utils
- import (
- "golang.org/x/exp/constraints"
- )
- type Range[T constraints.Ordered] struct {
- start T
- end T
- }
- func NewRange[T constraints.Ordered](start, end T) Range[T] {
- if start > end {
- return Range[T]{
- start: end,
- end: start,
- }
- }
- return Range[T]{
- start: start,
- end: end,
- }
- }
- func (r Range[T]) Contains(t T) bool {
- return t >= r.start && t <= r.end
- }
- func (r Range[T]) LeftContains(t T) bool {
- return t >= r.start && t < r.end
- }
- func (r Range[T]) RightContains(t T) bool {
- return t > r.start && t <= r.end
- }
- func (r Range[T]) Start() T {
- return r.start
- }
- func (r Range[T]) End() T {
- return r.end
- }
|