Heim > Artikel > Backend-Entwicklung > Gibt es ein Go-Äquivalent zur eval()-Funktion von JavaScript für die dynamische Codeauswertung?
Ausgewerteter/Ausführen von Golang-Code/Ausdruck wie eval() von JavaScript
Die eval()-Methode von JavaScript ermöglicht die Auswertung und Ausführung von Code/ Ausdrücke dynamisch. Dies wirft die Frage auf, ob eine ähnliche Funktionalität in Go vorhanden ist.
Lösung
Ja, es ist möglich, Go-Code/Ausdrücke, insbesondere Ausdrücke, auszuwerten und auszuführen das eval.go-Paket aus der Go-Standardbibliothek.
Um dies zu erreichen, ist der folgende Workflow Erforderlich:
Beispiel
Betrachten Sie den JavaScript-Code vorausgesetzt:
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;
Der folgende Go-Code zeigt, wie diese Ausdrücke ausgewertet werden:
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() }
Das obige ist der detaillierte Inhalt vonGibt es ein Go-Äquivalent zur eval()-Funktion von JavaScript für die dynamische Codeauswertung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!