You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: zeroreadatseeker.go
    path of file: ./repos/fq/internal/bitioex
    
    the code of the file until where you have to start completion: package bitioex

import (
	"io"

	"github.com/wader/fq/pkg/bitio"
)

type ZeroReadAtSeeker struct {
	pos   int64
	nBits int64
}

func NewZeroAtSeek
    
func (z *ZeroReadAtSeeker) SeekBits(bitOffset int64, whence int) (int64, error) {
	p := z.pos
	switch whence {
	case io.SeekStart:
		p = bitOffset
	case io.SeekCurrent:
		p += bitOffset
	case io.SeekEnd:
		p = z.nBits + bitOffset
	default:
		panic("unknown whence")
	}

	if p < 0 || p > z.nBits {
		return z.pos, bitio.ErrOffset
	}
	z.pos = p

	return p, nil
}