code: func NewWriter(f io.Writer, o *opt.Options) *Writer {
  	w := &Writer{
  		writer:          f,
  		cmp:             o.GetComparer(),
  		filter:          o.GetFilter(),
  		compression:     o.GetCompression(),
  		blockSize:       o.GetBlockSize(),
  		comparerScratch: make([]byte, 0),
  	}
  	// data block
  	w.dataBlock.restartInterval = o.GetBlockRestartInterval()
  	// The first 20-bytes are used for encoding block handle.
  	w.dataBlock.scratch = w.scratch[20:]
  	// index block
  	w.indexBlock.restartInterval = 1
  	w.indexBlock.scratch = w.scratch[20:]
  	// filter block
  	if w.filter != nil {
  		w.filterBlock.generator = w.filter.NewGenerator()
  		w.filterBlock.flush(0)
  	}
  	return w
  }
docs: // NewWriter creates a new initialized table writer for the file.
  //
  // Table writer is not safe for concurrent use.