code: func (d *Database) SomeValues(src interface{}, columns []string) ([]interface{}, error) {
  	data, err := getFields(reflect.TypeOf(src))
  	if err != nil {
  		return nil, err
  	}
  	structVal := reflect.ValueOf(src).Elem()
  
  	var values []interface{}
  	for _, name := range columns {
  		field, present := data.fields[name]
  		if !present {
  			// write null to the database
  			values = append(values, nil)
  
  			if Debug {
  				log.Printf("meddler.SomeValues: column [%s] not found in struct", name)
  			}
  			continue
  		}
  
  		saveVal, err := field.meddler.PreWrite(structVal.Field(field.index).Interface())
  		if err != nil {
  			return nil, fmt.Errorf("meddler.SomeValues: PreWrite error on column [%s]: %v", name, err)
  		}
  		values = append(values, saveVal)
  	}
  
  	return values, nil
  }
docs: // SomeValues returns a list of PreWrite processed values suitable for
  // use in an INSERT or UPDATE query. The columns used are the same ones (in
  // the same order) as specified in the columns argument.