code: func (rows *Rows) Scan(bean interface{}) error {
  	if rows.lastError != nil {
  		return rows.lastError
  	}
  
  	if reflect.Indirect(reflect.ValueOf(bean)).Type() != rows.beanType {
  		return fmt.Errorf("scan arg is incompatible type to [%v]", rows.beanType)
  	}
  
  	if err := rows.session.statement.setRefBean(bean); err != nil {
  		return err
  	}
  
  	fields, err := rows.rows.Columns()
  	if err != nil {
  		return err
  	}
  
  	scanResults, err := rows.session.row2Slice(rows.rows, fields, bean)
  	if err != nil {
  		return err
  	}
  
  	dataStruct := rValue(bean)
  	_, err = rows.session.slice2Bean(scanResults, fields, bean, &dataStruct, rows.session.statement.RefTable)
  	if err != nil {
  		return err
  	}
  
  	return rows.session.executeProcessors()
  }
docs: // Scan row record to bean properties