code: func (b *bucket) Delete(key []byte) error {
  	// Ensure transaction state is valid.
  	if err := b.tx.checkClosed(); err != nil {
  		return err
  	}
  
  	// Ensure the transaction is writable.
  	if !b.tx.writable {
  		str := "deleting a value requires a writable database transaction"
  		return makeDbErr(database.ErrTxNotWritable, str, nil)
  	}
  
  	// Nothing to do if there is no key.
  	if len(key) == 0 {
  		return nil
  	}
  
  	b.tx.deleteKey(bucketizedKey(b.id, key), true)
  	return nil
  }
docs: // Delete removes the specified key from the bucket.  Deleting a key that does
  // not exist does not return an error.
  //
  // Returns the following errors as required by the interface contract:
  //   - ErrKeyRequired if the key is empty
  //   - ErrIncompatibleValue if the key is the same as an existing bucket
  //   - ErrTxNotWritable if attempted against a read-only transaction
  //   - ErrTxClosed if the transaction has already been closed
  //
  // This function is part of the database.Bucket interface implementation.