当前位置: 首页 > wzjs >正文

小程序跳转到网站设计师培训资料

小程序跳转到网站,设计师培训资料,做的好的区块链网站,做门户网站建设多少钱github.com/expr-lang/expr 是一个 Go 语言的表达式求值库,它允许你在运行时安全地执行表达式。主要用途包括: 1.表达式求值: program, err : expr.Compile("2 2") if err ! nil {// 处理错误 } result, err : expr.Run(program…

github.com/expr-lang/expr 是一个 Go 语言的表达式求值库,它允许你在运行时安全地执行表达式。主要用途包括:

1.表达式求值:

program, err := expr.Compile("2 + 2")
if err != nil {// 处理错误
}
result, err := expr.Run(program, nil)
// result 将是 4

2.条件表达式

program, err := expr.Compile("age > 18 && name == 'John'")
if err != nil {// 处理错误
}
result, err := expr.Run(program, map[string]interface{}{"age": 20,"name": "John",
})
// result 将是 true

3.复杂表达式

program, err := expr.Compile("sum(numbers) > 100 && len(numbers) > 0")
if err != nil {// 处理错误
}
result, err := expr.Run(program, map[string]interface{}{"numbers": []int{1, 2, 3, 4, 5},"sum": func(numbers []int) int {sum := 0for _, n := range numbers {sum += n}return sum},
})

主要特点:
安全性:表达式在沙箱环境中执行
性能:编译后的表达式执行速度快
灵活性:支持自定义函数和变量
类型安全:支持类型检查

常见用途:
规则引擎
配置验证
动态条件判断
数据过滤
业务规则执行
例如,在配置验证中:

type Config struct {MaxSize intMinSize int
}config := Config{MaxSize: 100, MinSize: 10}
program, err := expr.Compile("MaxSize > MinSize")
if err != nil {// 处理错误
}
result, err := expr.Run(program, config)
if err != nil {// 处理错误
}
if !result.(bool) {// 配置无效
}

在业务规则中:

type Order struct {Amount float64Items  int
}order := Order{Amount: 100, Items: 5}
program, err := expr.Compile("Amount > 50 && Items > 0")
if err != nil {// 处理错误
}
result, err := expr.Run(program, order)
if err != nil {// 处理错误
}
if result.(bool) {// 订单有效
}

使用注意事项

expr.Compile 方法的性能和使用注意事项如下:
1.编译性能:

// 编译性能
program, err := expr.Compile("2 + 2")

编译时间通常很短,在微秒级别
但对于复杂表达式,编译时间会相应增加
建议缓存编译结果,避免重复编译

2.缓存编译结果:

// 使用 sync.Map 缓存编译结果
var compiledExpressions sync.Mapfunc getCompiledExpression(expr string) (*expr.Program, error) {// 先查找缓存if cached, ok := compiledExpressions.Load(expr); ok {return cached.(*expr.Program), nil}// 编译新表达式program, err := expr.Compile(expr)if err != nil {return nil, err}// 存入缓存compiledExpressions.Store(expr, program)return program, nil
}

3.错误处理:

// 完整的错误处理
program, err := expr.Compile("invalid expression")
if err != nil {switch e := err.(type) {case *expr.Error:// 处理表达式错误log.Printf("Expression error: %v", e)default:// 处理其他错误log.Printf("Unexpected error: %v", e)}return
}

4.类型安全:

// 使用类型检查
env := map[string]interface{}{"age": 20,"name": "John",
}// 编译时进行类型检查
program, err := expr.Compile("age > 18 && name == 'John'", expr.Env(env))
if err != nil {// 处理类型错误return
}

5.并发安全:

// 使用互斥锁保护缓存
var (cache     = make(map[string]*expr.Program)cacheLock sync.RWMutex
)func getCompiledExpression(expr string) (*expr.Program, error) {cacheLock.RLock()if program, ok := cache[expr]; ok {cacheLock.RUnlock()return program, nil}cacheLock.RUnlock()cacheLock.Lock()defer cacheLock.Unlock()program, err := expr.Compile(expr)if err != nil {return nil, err}cache[expr] = programreturn program, nil
}

文章转载自:

http://XkjLR7iK.Lrdzb.cn
http://5BZPeyec.Lrdzb.cn
http://KYJptKze.Lrdzb.cn
http://oNIik6Oi.Lrdzb.cn
http://Uan5eP3v.Lrdzb.cn
http://fJLQB81N.Lrdzb.cn
http://cWKllLYZ.Lrdzb.cn
http://qbKvgZMW.Lrdzb.cn
http://V532zyoU.Lrdzb.cn
http://Qe5B8yRC.Lrdzb.cn
http://ESUS9bP2.Lrdzb.cn
http://adnKVQEh.Lrdzb.cn
http://C2jU0rSy.Lrdzb.cn
http://Eqv60jrx.Lrdzb.cn
http://6trl9Zfs.Lrdzb.cn
http://SI7Er7ad.Lrdzb.cn
http://64MDz7lp.Lrdzb.cn
http://DgzjQCm8.Lrdzb.cn
http://s4WHtpRV.Lrdzb.cn
http://9w9iUhu3.Lrdzb.cn
http://ZwStCnjX.Lrdzb.cn
http://XmNgcFpK.Lrdzb.cn
http://6KPZGGuW.Lrdzb.cn
http://Z1O4KzPT.Lrdzb.cn
http://q4C9sYwR.Lrdzb.cn
http://sfGDa37G.Lrdzb.cn
http://IvJjtumB.Lrdzb.cn
http://bN2T6ZIx.Lrdzb.cn
http://TIsApHn7.Lrdzb.cn
http://ZAhSSOOs.Lrdzb.cn
http://www.dtcms.com/wzjs/672848.html

相关文章:

  • 网站空间代理站抖音代运营排名
  • 开发网站所用技术七牛云存储 wordpress连接失败
  • 注册账号自建网站谷歌域名注册
  • 中国建设工程信息网站上海网站备案信息注销
  • 开企网站建设wordpress 根据ua跳转
  • 住房和建设执业资格注册中心网站企业网站建设ppt模板
  • 苏州网站建设推广案例一 网站建设总体目标
  • 做网站需要注册什么公司上海建筑设计公司网站
  • 旺道seo怎么优化网站东莞网站制作
  • nodejs做网站的弊端高端瓶装水品牌
  • 什么网站可以做论坛app企业网站如何做seo
  • 基于.net音乐网站开发设计制作小车
  • 有什么办法做自己的网站室内装修设计师怎么样
  • 做视频的软件模板下载网站有哪些设计网站专题页包括那些项目
  • 微信公众号平台及网站建设计划app软件开发用什么软件
  • 网站开发平台软件网店运营与管理
  • 漂亮的设计类图片网站响应式网站模板免费
  • 网站建设经营服务合同南京市网站建设公司
  • 网站优化需求表网站怎样做seo推广
  • 东莞seoseo优化排名东莞企业seo推广
  • 广告字体效果图在线制作广州网站优化快速提升网站排名
  • 宝山php网站开发培训一个app的开发流程
  • 滁州公司做网站网站建设图片按钮
  • 阜阳市重点工程建设局网站网站维护要学多久
  • dx网站是哪家公司做的网站建设实验报告手写
  • 门户网站维护怎么做农产品网络营销渠道
  • 自己做的网站怎么才能在百度上查找站长统计幸福宝网站统计
  • 好的网站制作平台网站建设-部署与发布的题目
  • 集团网站建设特点 互联网课堂平台设计是做什么
  • 那个网站的机票做便宜自己服务器做网站如何备案