code: func (db *Storage) Delete(ctxt Context, val interface{}) error {
  	ctxt = debugContext(ctxt)
  	t, _, err := db.findType(val, "Delete")
  	if err != nil {
  		return err
  	}
  
  	var buf bytes.Buffer
  	var args []interface{}
  	rval := reflect.ValueOf(val).Elem()
  
  	fmt.Fprintf(&buf, "delete from %q where ", t.name)
  	sep := ""
  	for _, col := range t.fields {
  		if !col.key {
  			continue
  		}
  		args = append(args, rval.FieldByIndex(col.index).Interface())
  		fmt.Fprintf(&buf, "%s%q = ?", sep, col.name)
  		sep = " and "
  	}
  
  	_, err = ctxt.Exec(buf.String(), args...)
  	return err
  }
docs: // Delete deletes the value from the database.
  // The unique identification fields in val must be set.
  //
  // Delete executes a command like:
  //	delete from Structs
  //	where Key1 = val.Key1 and Key2 = val.Key2