github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/utils/bitmap/bitset.go (about) 1 package bitmap 2 3 type Set []byte 4 5 func New(max int) Set { 6 l := max / 8 7 if max%8 != 0 { 8 l++ 9 } 10 return make(Set, l) 11 } 12 13 func (s Set) Put(i int) { 14 yi := i / 8 15 bi := i % 8 16 s[yi] |= 1 << bi 17 } 18 19 func (s Set) Del(i int) { 20 yi := i / 8 21 bi := i % 8 22 s[yi] &= ^(1 << bi) 23 } 24 25 func (s Set) Has(i int) bool { 26 yi := i / 8 27 bi := i % 8 28 return (s[yi] & (1 << bi)) != 0 29 }