評估/執行Golang程式碼/表達式就像JavaScript的eval()
JavaScript的eval()方法允許評估和執行程式碼/動態表達。這就提出了一個問題:Go 中是否有類似的功能。
解
是的,可以使用以下方法來計算和執行Go 程式碼/表達式,特別是表達式:來自Go 標準函式庫的eval.go包。
要實現此目的,需要以下工作流程:
範例
考慮提供的JavaScript 程式碼:
var x = 10; var y = 20; var a = eval("x * y") + "<br>"; var b = eval("2 + 2") + "<br>"; var c = eval("x + 17") + "<br>"; var res = a + b + c;
以下Go 程式碼示範如何計算這些表達式:
import ( "fmt" "go/types" ) func main() { // Create a package pkg := types.NewPackage("main", "go.example.org/eval") // Create a scope scope := types.NewScope(pkg, types.Universe) // Insert constants scope.Insert(types.NewConst(types.NewVar(scope, "x", types.Int), types.Typ[types.Int], 10)) scope.Insert(types.NewConst(types.NewVar(scope, "y", types.Int), types.Typ[types.Int], 20)) // Evaluate expressions res := evalExpression(scope, pkg) fmt.Println(res) // 200\n4\n27 } func evalExpression(scope *types.Scope, pkg *types.Package) string { expr, _ := types.ParseExpr("x * y + \"\n\"") result, _ := eval.Eval(expr, pkg, scope) return result.String() }
以上是Go 中是否有相當於 JavaScript eval() 函數的動態程式碼評估函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!