美文网首页
条件公式解析

条件公式解析

作者: funcx | 来源:发表于2018-12-17 16:44 被阅读7次
    func main() {
        log.Println(resolveFormula([]interface{}{"1", "+", []string{"3", "*", "1"}, "*", 1}))
    }
    
    func resolveFormula(i interface{}) (string, error) {
        rv := reflect.ValueOf(i)
        switch rv.Kind() {
        case reflect.Slice:
            str := "("
            for n := 0; n < rv.Len(); n++ {
                a, err := resolveFormula(rv.Index(n).Interface())
                if err != nil {
                    return "", err
                }
                str += a
            }
            str += ")"
            return str, nil
        case reflect.String:
            return i.(string), nil
        default: //根据条件解析公式
            if data, err := json.Marshal(i); err != nil {
                return "", err
            } else {
                var cond interface{}
                if err := json.Unmarshal(data, &cond); err != nil {
    
                }
                if value, err := calc(cond); err != nil {
                    return "", err
                } else {
                    return fmt.Sprintf("%.2f", value), nil
                }
            }
        }
    }
    
    func calc(cond interface{}) (float64, error) {
        return 11.11, nil
    }
    

    相关文章

      网友评论

          本文标题:条件公式解析

          本文链接:https://www.haomeiwen.com/subject/aosckqtx.html