您现在的位置是:首页 > 文章详情

Expr —— Go 表达式语言

日期:2023-08-21点击:330

Expr 是一种以 Go 为中心的表达式语言,旨在以无与伦比的准确性、安全性和速度提供动态配置。

 // Allow only admins and moderators to moderate comments. user.Group in ["admin", "moderator"] || user.Id == comment.UserId
 // Ensure all tweets are less than 240 characters. all(Tweets, .Size <= 240)

特性

  • 内存安全:Expr 的设计注重安全性,确保程序不会访问不相关的内存或引入内存漏洞
  • 无副作用:在 Expr 中计算的表达式仅根据输入计算输出,确保不会产生可能改变状态或产生意外结果的副作用
  • 防止无限循环,确保每个程序都会在合理的时间内结束
  • 与 Go 无缝集成:将 Expr 集成到 Go 项目中,无需重新定义类型

示例代码

 package main import ( "fmt" "github.com/antonmedv/expr" ) func main() { env := map[string]interface{}{ "greet": "Hello, %v!", "names": []string{"world", "you"}, "sprintf": fmt.Sprintf, } code := `sprintf(greet, names[0])` program, err := expr.Compile(code, expr.Env(env)) if err != nil { panic(err) } output, err := expr.Run(program, env) if err != nil { panic(err) } fmt.Println(output) }
原文链接:https://www.oschina.net/p/expr
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章