go语言EL表达式

心已赠人 2023-02-16 10:58 108阅读 0赞

expression EL表达式

项目地址:go-expression

目前发布初始版本,欢迎体验。有帮助的恳请点一个star。

Install

  1. go get github.com/heartlhj/go-expression

功能

  • 字符串的提取和比较

    context := spel.StandardEvaluationContext{ }

    1. m := make(map[string]interface{ })
    2. m["name"] = "lisi"
    3. m["age"] = 18
    4. context.SetVariables(m)
    5. parser := SpelExpressionParser{ }
    6. expressionString := "#name=='lisi'"
    7. //expressionString := "#name" //返回lisi
    8. valueContext := parser.ParseExpression(expressionString).GetValueContext(&context)
  • 数字比较,支持int和 float64

    context := spel.StandardEvaluationContext{ }

    1. m := make(map[string]interface{ })
    2. m["name"] = "lisi"
    3. m["age"] = 18
    4. context.SetVariables(m)
    5. parser := SpelExpressionParser{ }
    6. expressionString := "#age>=10"
    7. valueContext := parser.ParseExpression(expressionString).GetValueContext(&context)

float64比较

  1. context := spel.StandardEvaluationContext{ }
  2. m := make(map[string]interface{ })
  3. var ageFloat float64
  4. ageFloat = 10
  5. m["num"] = ageFloat
  6. context.SetVariables(m)
  7. parser := SpelExpressionParser{ }
  8. expressionString := "#num>=9f"
  9. valueContext := parser.ParseExpression(expressionString).GetValueContext(&context)
  • 与(&&)或 (||)操作

    context := spel.StandardEvaluationContext{ }

    1. m := make(map[string]interface{ })
    2. m["name"] = "lisi"
    3. m["age"] = 18
    4. context.SetVariables(m)
    5. parser := SpelExpressionParser{ }
    6. expressionString := "#name=='lisi' && #age>=3"
    7. valueContext := parser.ParseExpression(expressionString).GetValueContext(&context)
  • 复合结构,迭代提取

    context := spel.StandardEvaluationContext{ }

    1. context.AddPropertyAccessor(spel.MapAccessor{ })
    2. m := make(map[string]interface{ })
    3. m["name"] = "lisi"
    4. m["age"] = 18
    5. m1 := make(map[string]interface{ })
    6. m2 := make(map[string]interface{ })
    7. m2["num"] = 12
    8. m1["code"] = m2
    9. m["order"] = m1
    10. context.SetVariables(m)
    11. parser := SpelExpressionParser{ }
    12. expressionString := "#order.code.num==12"
    13. valueContext := parser.ParseExpression(expressionString).GetValueContext(&context)
  • 数组和切片提取

    context := spel.StandardEvaluationContext{ }

    1. context.AddPropertyAccessor(spel.MapAccessor{ })
    2. m := make(map[string]interface{ })
    3. m["name"] = "lisi"
    4. m["age"] = 18
    5. m1 := make(map[string]interface{ })
    6. //切片
    7. //orders := make([]Order, 2)
    8. //数组
    9. orders := [2]Order{ }
    10. orders[0] = Order{ name: "lisi", age: 12}
    11. orders[1] = Order{ name: "wang", age: 24}
    12. m1["code"] = orders
    13. m["order"] = m1
    14. context.SetVariables(m)
    15. parser := SpelExpressionParser{ }
    16. expressionString := "#order.code[0].name=='lisi'"
    17. valueContext := parser.ParseExpression(expressionString).GetValueContext(&context)
  • 字符串下标判断提取

    context := spel.StandardEvaluationContext{ }

    1. context.AddPropertyAccessor(spel.MapAccessor{ })
    2. m := make(map[string]interface{ })
    3. m["name"] = "lisi"
    4. m["age"] = 18
    5. context.SetVariables(m)
    6. parser := SpelExpressionParser{ }
    7. expressionString := "#name[2]=='s'"
    8. valueContext := parser.ParseExpression(expressionString).GetValueContext(&context)

发表评论

表情:
评论列表 (有 0 条评论,108人围观)

还没有评论,来说两句吧...

相关阅读

    相关 EL-表达式语言

    概述 EL是expression Language的简称,意思是表达式语言,在EL出现之前,开发jsp程序时,经常需要写如大量的Java语言嵌入在jsp页面,它的出现使得页面

    相关 EL表达式语言(二)

    接上篇:[EL表达式语言(一)][EL] 一、EL函数库 1. 什么EL函数库 EL函数库是由第三方对EL的扩展,我们现在学习的EL函数库是由JSTL添加的。