code: func number(itf interface{}) interface{} {
  
  	if itf == nil {
  		return nil
  	}
  
  	f, ok := _float64(itf)
  	if ok {
  		return f
  	}
  
  	i, ok := _int64(itf)
  	if ok {
  		return i
  	}
  
  	s := _string(itf)
  	if len(s) == 0 {
  		return nil
  	}
  
  	if isInteger(s) {
  		n, err := strconv.ParseInt(s, 10, 64)
  		if err != nil {
  			return nil
  		}
  		return n
  	}
  
  	n, err := strconv.ParseFloat(s, 64)
  	if err != nil {
  		return nil
  	}
  	return n
  }
docs: // number tries hard to convert the parameter to an int64 or float64. If it
  // cannot, then it returns nil.