code: func numericScore(val reflect.Value) float64 {
  	for val.Kind() == reflect.Ptr {
  		val = val.Elem()
  	}
  	switch val.Kind() {
  	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  		integer := val.Int()
  		return float64(integer)
  	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
  		uinteger := val.Uint()
  		return float64(uinteger)
  	case reflect.Float32, reflect.Float64:
  		return val.Float()
  	default:
  		msg := fmt.Sprintf("zoom: attempt to call numericScore on non-numeric type %s", val.Type().String())
  		panic(msg)
  	}
  }
docs: // numericScore returns a float64 which is the score for val in a sorted set.
  // If val is a pointer, it will keep dereferencing until it reaches the underlying
  // value. It panics if val is not a numeric type or a pointer to a numeric type.