code: func (d *Database) Scan(rows *sql.Rows, dst interface{}) error {
  	// get the list of struct fields
  	data, err := getFields(reflect.TypeOf(dst))
  	if err != nil {
  		return err
  	}
  
  	// get the sql columns
  	columns, err := rows.Columns()
  	if err != nil {
  		return err
  	}
  
  	return d.scanRow(data, rows, dst, columns)
  }
docs: // Scan scans a single sql result row into a struct.
  // It leaves rows ready to be scanned again for the next row.
  // Returns sql.ErrNoRows if there is no data to read.