code: func compare(v1, v2 interface{}, op int) bool {
  
  	var i1, i2 int64
  	var ok bool
  
  	i1, ok = _int64(v1)
  
  	if ok {
  		i2, ok = _int64f(v2)
  		if !ok {
  			return false
  		}
  
  		switch op {
  		case '=':
  			return i1 == i2
  		case '+':
  			return i1 >= i2
  		case '-':
  			return i1 <= i2
  		case '>':
  			return i1 > i2
  		case '<':
  			return i1 < i2
  		case '!':
  			return i1 != i2
  		}
  		return false
  	}
  
  	var f1, f2 float64
  
  	f1, ok = _float64(v1)
  	if ok {
  		f2, ok = _float64f(v2)
  		if !ok {
  			return false
  		}
  		switch op {
  		case '=':
  			return f1 == f2
  		case '+':
  			return f1 >= f2
  		case '-':
  			return f1 <= f2
  		case '>':
  			return f1 > f2
  		case '<':
  			return f1 < f2
  		case '!':
  			return f1 != f2
  		}
  		return false
  	}
  
  	s1 := _string(v1)
  	s2 := _string(v2)
  
  	switch op {
  	case '=':
  		return s1 == s2
  	case '!':
  		return s1 != s2
  	}
  	return false
  }
docs: // int* | float* | string
  // first element determines type