type bitReader … // newBitReader returns a new bitReader reading from r. If r is not // already an io.ByteReader, it will be converted via a bufio.Reader. func newBitReader(r io.Reader) bitReader { … } // ReadBits64 reads the given number of bits and returns them in the // least-significant part of a uint64. In the event of an error, it returns 0 // and the error can be obtained by calling bitReader.Err(). func (br *bitReader) ReadBits64(bits uint) (n uint64) { … } func (br *bitReader) ReadBits(bits uint) (n int) { … } func (br *bitReader) ReadBit() bool { … } func (br *bitReader) Err() error { … }