golang 实现的表达式计算,不断完善中,欢迎大家提出宝贵的建议👏👏👏 https://github.com/huangxingx/goexpression

2021-09-28 22:03:34 +08:00
 huangxingx
package main

import (
	"fmt"

	"github.com/huangxingx/goexpression"
)

func main() {
	expressStr := "1+2+3"
	exp := goexpression.NewExpress(expressStr)
	result := exp.Execute(nil)
	fmt.Printf("%s = %.2f", expressStr, result.(float64))
}
2188 次点击
所在节点    Go 编程语言
6 条回复
loading
2021-09-28 22:14:43 +08:00
你可能是需要 js eval ?
然后我查了一下,已经有了:goeval
masterclock
2021-09-28 22:34:59 +08:00
这一类的不少,
github.com/antonmedv/expr 较为简单,go template 类语法
https://github.com/google/cel-go google 的 cel,支持 protobuf 类型
除非有特点,否则不值得投入
huangxingx
2021-09-28 22:46:13 +08:00
@loading 看了一下这个库的实现,感觉不是我们想要的。
huangxingx
2021-09-28 22:48:50 +08:00
@masterclock 嗯。这一类确实不少,我这个的思路是从 java 的 qlexpress https://github.com/alibaba/QLExpress.git 来的,用 golang 实现也是抱着学习的态度。
vone
2021-09-29 14:42:07 +08:00
1 楼说的对,可以看下王垠对这类需求的思考,大部分情况下其实只是需要一个脚本语言的运行时。

http://www.yinwang.org/blog-cn/2017/05/25/dsl
airplayxcom
2021-09-29 15:01:39 +08:00
为什么要写这个
2^2 你打算怎么算

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/805001

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX