code: func MapScan(r ColScanner, dest map[string]interface{}) error {
  	// ignore r.started, since we needn't use reflect for anything.
  	columns, err := r.Columns()
  	if err != nil {
  		return err
  	}
  
  	values := make([]interface{}, len(columns))
  	for i := range values {
  		values[i] = new(interface{})
  	}
  
  	err = r.Scan(values...)
  	if err != nil {
  		return err
  	}
  
  	for i, column := range columns {
  		dest[column] = *(values[i].(*interface{}))
  	}
  
  	return r.Err()
  }
docs: // MapScan scans a single Row into the dest map[string]interface{}.
  // Use this to get results for SQL that might not be under your control
  // (for instance, if you're building an interface for an SQL server that
  // executes SQL from input).  Please do not use this as a primary interface!
  // This will modify the map sent to it in place, so reuse the same map with
  // care.  Columns which occur more than once in the result will overwrite
  // each other!