code: func InRange(value interface{}, left interface{}, right interface{}) bool {
  
  	reflectValue := reflect.TypeOf(value).Kind()
  	reflectLeft := reflect.TypeOf(left).Kind()
  	reflectRight := reflect.TypeOf(right).Kind()
  
  	if reflectValue == reflect.Int && reflectLeft == reflect.Int && reflectRight == reflect.Int {
  		return InRangeInt(value.(int), left.(int), right.(int))
  	} else if reflectValue == reflect.Float32 && reflectLeft == reflect.Float32 && reflectRight == reflect.Float32 {
  		return InRangeFloat32(value.(float32), left.(float32), right.(float32))
  	} else if reflectValue == reflect.Float64 && reflectLeft == reflect.Float64 && reflectRight == reflect.Float64 {
  		return InRangeFloat64(value.(float64), left.(float64), right.(float64))
  	} else {
  		return false
  	}
  }
docs: // InRange returns true if value lies between left and right border, generic type to handle int, float32 or float64, all types must the same type