code: func New(reader io.ReaderAt, hash func([]byte) uint32) (*CDB, error) {
  	if hash == nil {
  		hash = cdbHash
  	}
  
  	cdb := &CDB{reader: reader, hash: hash}
  	err := cdb.readIndex()
  	if err != nil {
  		return nil, err
  	}
  
  	return cdb, nil
  }
docs: // New opens a new CDB instance for the given io.ReaderAt. It can only be used
  // for reads; to create a database, use Writer. The returned CDB instance is
  // thread-safe as long as reader is.
  //
  // If hash is nil, it will default to the CDB hash function. If a database
  // was created with a particular hash function, that same hash function must be
  // passed to New, or the database will return incorrect results.