code: func (r *Reader) parseRecord() (fields []string, err error) {
  	// Each record starts on a new line.  We increment our line
  	// number (lines start at 1, not 0) and set column to -1
  	// so as we increment in readRune it points to the character we read.
  	r.line++
  	r.column = -1
  
  	// Peek at the first rune.  If it is an error we are done.
  	// If we are support comments and it is the comment character
  	// then skip to the end of line.
  
  	r1, _, err := r.r.ReadRune()
  	if err != nil {
  		return nil, err
  	}
  
  	if r.Comment != 0 && r1 == r.Comment {
  		return nil, r.skip('\n')
  	}
  	r.r.UnreadRune()
  
  	// At this point we have at least one field.
  	for {
  		haveField, delim, err := r.parseField()
  		if haveField {
  			fields = append(fields, r.field.String())
  		}
  		if delim == '\n' || err == io.EOF {
  			return fields, err
  		} else if err != nil {
  			return nil, err
  		}
  	}
  }
docs: // parseRecord reads and parses a single csv record from r.