JavaScript の eval() のような Golang コード/式の評価/実行
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() }
以上が動的コード評価用の JavaScript の eval() 関数に相当する Go はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。