Maison > Article > développement back-end > Existe-t-il un équivalent Go à la fonction eval() de JavaScript pour l'évaluation dynamique du code ?
Évalué/exécutant du code/expression Golang comme eval() de JavaScript
La méthode eval() de JavaScript permet l'évaluation et l'exécution de code/ expressions de manière dynamique. Cela soulève la question de savoir si une fonctionnalité similaire existe dans Go.
Solution
Oui, il est possible d'évaluer et d'exécuter du code/des expressions Go, en particulier des expressions, en utilisant le package eval.go de la bibliothèque standard Go.
Pour y parvenir, le workflow suivant est requis :
Exemple
Considérez le code JavaScript fourni :
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;
Le code Go suivant montre comment évaluer ces expressions :
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() }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!