Categorygithub.com/karpeleslab/bitmap
repositorypackage
0.0.0-20191229165901-11963543902d
Repository: https://github.com/karpeleslab/bitmap.git
Documentation: pkg.go.dev

# README

Build Status GoDoc Coverage Status

Bitmap

Simple bitmaps in Go.

Provides the following methods on bitmap objects:

  • Get(bit int)
  • Set(bit int, value bool)
  • Toggle(bit)
  • GetAtomic(bit int)
  • SetAtomic(bit int, value bool)
  • ToggleAtomic(bit int)

Example

	m := bitmap.New(127)

	m.Set(42, true)

	if m.Get(42) {
		// OK
	}

Why?

There are already a few bitmap implementations in Go available out there, however they have some shortfalls and/or are too complex for what a bitmap should do.

  • boljen's go-bitmap has separate implementations for Bitmap/Concurrent/Threadsafe, and complexifies a lot what should be very simple.
  • ShawnMilo's bitmap has a nice feel but lacks atomic methods and adds string methods using json/gzip/base64 (?)
  • Roaring Bitmaps are simply too complex for what I need bitmaps for. You should however definitely use that if you store more than 200k bits or so in total.