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