本文摘自网络,作者,侵删。
type bitmap struct {
keys []byte
len int
}
func NewBitMap() *bitmap {
return &bitmap{keys:make([]byte, 0), len:0}
}
func (b *bitmap)has(v int) bool {
k := v /8
kv :=byte(v %8)
if k >len(b.keys) { //todo not exist
return false
}
if b.keys[k]&(1<<kv) != 0 {
return true
}
return false
}
func (b *bitmap)set(v int) {
k := v /8
kv :=byte(v %8)
for b.len <= k {
b.keys =append(b.keys, 0)
b.len++
}
b.keys[k] =b.keys[k] | (1 << kv)
}
func (b *bitmap)length()int {
return b.len
}
func (b *bitmap)print() {
for _, v :=range b.keys {
fmt.Printf("%08b\n", v)
}
}
本文来自:简书
感谢作者:GoSnail
查看原文:golang 实现bitmap
相关阅读 >>
Golang使用kafka报错c.client.config.config.consumer.offsets.commitinterval undefined问题
更多相关阅读请进入《Go》频道 >>
Go语言101
一个与时俱进的Go编程知识库。