首页 > 其他分享 >govaluate - 规则引擎

govaluate - 规则引擎

时间:2023-06-20 11:04:19浏览次数:43  
标签:bar string 算式 fmt 引擎 规则 govaluate foo


package main

import (
	"fmt"
	"github.com/Knetic/govaluate"
)

// github
// https://github.com/Knetic/govaluate

// 双引号内为规则算式
// 单引号表示字符串
// 无引号表示变量, 变量必须在传入的参数中存在

// 判断相等或不等: == !=
// "foo == 'bar'" --> 变量 foo 的值为 bar

// 存在
// "ip in ('a','b','c')"  --> 变量 ip 的值是否在列表中

// 比大小 > >= < <=
// "a > 10"

// 字符串模糊匹配(使用正则) =~ !~
// "foo =~ ".*bar.*""

// 运算连接符
// && 并
// || 或

type Rule struct {
	Expr   string   // 规则算式
	Action []string // 动作列表(也可以是结构体)
}

func main() {

	// 算式
	expr := "foo=='bar'"

	// 引入算式
	expression, _ := govaluate.NewEvaluableExpression(expr)

	// 规则参数
	param := map[string]interface{}{
		"foo": "bar",
	}

	// 规则计算, 省略错误处理
	ok, _ := expression.Evaluate(param)
	if ok.(bool) {
		fmt.Println("匹配成功")
	} else {
		fmt.Println("匹配失败")
	}
}


标签:bar,string,算式,fmt,引擎,规则,govaluate,foo
From: https://blog.51cto.com/u_16165803/6521272

相关文章

  • MySql InnoDB 存储引擎表优化
    一、InnoDB表存储优化1、OPTIMIZETABLE适时的使用OPTIMIZETABLE语句来重组表,压缩浪费的表空间。这是在其它优化技术不可用的情况下最直接的方法。OPTIMIZETABLE语句通过拷贝表数据并重建表索引,使得索引数据更加紧凑,减少空间碎片。语句的执行效果会因表的不同而不同。过大......
  • 规则引擎调研及初步使用
    一、产生的背景生产过程中,线上的业务规则内嵌在系统的各处代码中,每次策略的调整都需要更新线上系统,进行从需求->设计->编码->测试->上线这种长周期的流程,满足不了业务规则的快速变化以及低成本的更新试错迭代。因此需要有一种解决方案将商业决策逻辑和应用开发者的技术决策分离......
  • Nashorn引擎导致metaspace oom
       从报错内容很清楚是Metaspace区域oom了大部分情况下,程序运行中不会出现过多的类加载数量的变动,先导入dump文件检查是否有异常的classLoader或者有异常动态生成的class发现了下面这个classLoader数量异常,项目中用到nashorn这块js引擎来做动态js脚本执行通过查阅nas......
  • 一文读懂火山引擎A/B测试的实验类型(2)——可视化实验
    一.概述可视化实验,通过所见即所得的在线编辑(比如对页面中的图片、文字、颜色、位置等元素和属性进行编辑),降低在Web/H5页面优化的场景下,产品方和运营方使用A/B实验工具的成本,免除编码。前置条件及限制:目前可视化实验支持在Web及H5页面开启。用于创建可视化实验的页面需要接......
  • Turndown 源码分析:二、规则`commonmark-ruiles.js` REV1
    import{repeat}from'./utilities'varrules={}//段落rules.paragraph={filter:'p',replacement:function(content){//前后加两个换行return'\n\n'+content+'\n\n'}}//换行rules.lineBrea......
  • MySQL表类型和存储引擎
    基本介绍MySQL的表类型由存储引擎决定,主要包括MyISAM、innoDB、Memory等MySQL数据表主要支持六种类型,分别是:CSV、Memory、ARCHIVE、MRG_MYISAM、MYISAM、InnoDB这六种又分为两类,一类是“事务安全型”,比如:InnoDB;其余都属于第二类,称为“非事务安全型”细节说明MyISAM不支持事务、也不......
  • 正则表达式的语法规则
    元字符元字符 描述.   查找单个字符,除了换行和行结束符\w  查找单词字符\W  查找非单词字符\d  查找数字\D  查找非数字字符\s  查找空白字符\S  查找非空白字符\b  匹配单词边界\B  匹配非单词边界\0  查找NUL字符\n  查找换行符\f  查找......
  • Android代码检查规则Lint的自定义与应用
    前言:在日常的代码开发中,此处相信每个开发人员对代码质量都是高要求,有自己的一套代码规范,但是我们不是单独作战,往往大家都是团队作战,人是最大的变量,各人各异,如何保证团队的代码质量和代码规范呢?靠开发者自觉吗?也许有的团队有严格的CR机制,在MR阶段会进行CR,CR不通过的MR是不允许合入的......
  • 一次性掌握innodb引擎如何解决幻读和不可重复读
    了解mysql的都知道,在mysql的RR(可重复)隔离级别下解决了幻读和不可重复。你知道RR下是怎么解决的吗,很多人会回答是通过MVCC和next-key解决的,具体是怎么解决的,今天来重点分析下。mysql的隔离级别都不陌生了,简单回顾下四种隔离级别:RU(读未提交)、RC(读已提交)、RR(可重复读)【默认隔离级别......
  • 一文搞懂V8引擎的垃圾回收机制
    前言我们平时在写代码的过程中,好像很少需要自己手动进行垃圾回收,那么V8是如何来减少内存占用,从而避免内存溢出而导致程序崩溃的情况的。为了更高效地回收垃圾,V8引入了两个垃圾回收器,它们分别针对不同场景进行工作。垃圾从何而来我们先来搞清楚这些‘垃圾’是怎么产生的不管使用哪一......