code: func (a *ArgType) ParsePrecision(dt string) (string, int, int) {
  	var err error
  
  	precision := -1
  	scale := -1
  
  	m := PrecScaleRE.FindStringSubmatchIndex(dt)
  	if m != nil {
  		// extract precision
  		precision, err = strconv.Atoi(dt[m[2]:m[3]])
  		if err != nil {
  			panic("could not convert precision")
  		}
  
  		// extract scale
  		if m[4] != -1 {
  			scale, err = strconv.Atoi(dt[m[4]+1 : m[5]])
  			if err != nil {
  				panic("could not convert scale")
  			}
  		}
  
  		// change dt
  		dt = dt[:m[0]] + dt[m[1]:]
  	}
  
  	return dt, precision, scale
  }
docs: // ParsePrecision extracts (precision[,scale]) strings from a data type and
  // returns the data type without the string.