code: func (e *LoadDataInfo) getFieldsFromLine(line []byte) ([]field, error) {
  	var (
  		reader fieldWriter
  		fields []field
  	)
  
  	if len(line) == 0 {
  		str := []byte("")
  		fields = append(fields, field{str, false, false})
  		return fields, nil
  	}
  
  	reader.Init(e.FieldsInfo.Enclosed, e.FieldsInfo.Terminated[0], &line, &e.FieldsInfo.Terminated)
  	for {
  		eol, f := reader.GetField()
  		f = f.escape()
  		if string(f.str) == "NULL" && !f.enclosed {
  			f.str = []byte{'N'}
  			f.maybeNull = true
  		}
  		fields = append(fields, f)
  		if eol {
  			break
  		}
  	}
  	return fields, nil
  }
docs: // getFieldsFromLine splits line according to fieldsInfo.