Golang
的 eval()
函数第三方实现。javascript
众所周知,Golang
是一门静态语言,笔者做为动态语言转过来的老同志(别猜了我是phper),习惯了用 eval()
就想着Go 动态执行代码呢。php
如何在 golang
中使用 eval()
函数,php
,javascript
自带该功能。golang 官方是没有提供相关库的。java
在丰富的Go第三方生态中,着实没找到相关的库。却是看到有人作了一个demo 挂到博客。我就来拿来改改,作成了一个库,望广大 gopher
用的满意。git
$ go get github.com/PaulXu-cn/goeval
这个 goeval 库,传入 golang
代码字符串,而后执行 eval()
函数,就能得到该 字符串代码
输出到 stdout
上的内容。github
使用例子:golang
package main import ( "fmt" eval "github.com/PaulXu-cn/goeval" ) func main() { if re, err := eval.Eval("", "fmt.Print(\"Hello World itjsz.com\")", "fmt"); nil == err { fmt.Print(string(re)) } else { fmt.Print(err.Error()) } }
输出:函数
Hello World itjsz.com
这里咱们引入了 goeval
包,调用它的 Eval 函数,第一个参数是,结构体定义代码(因为代码中没有有用自定义结构体,全部这里传空), 第二个字符串是要执行的代码,第三及之后的字符串是import的包。code
import
的包能够多,但不能少。tmp
目录下随机建立一个目录,并进入main.go
文件go run main.go
并收集 stdout
main.go