code: func Select(q Queryer, dest interface{}, query string, args ...interface{}) error {
  	rows, err := q.Queryx(query, args...)
  	if err != nil {
  		return err
  	}
  	// if something happens here, we want to make sure the rows are Closed
  	defer rows.Close()
  	return scanAll(rows, dest, false)
  }
docs: // Select executes a query using the provided Queryer, and StructScans each row
  // into dest, which must be a slice.  If the slice elements are scannable, then
  // the result set must have only one column.  Otherwise, StructScan is used.
  // The *sql.Rows are closed automatically.
  // Any placeholder parameters are replaced with supplied args.