JS eval() Équivalent en Go
Des évaluations similaires à eval() de JavaScript peuvent en effet être effectuées en Go. Ceci est particulièrement utile pour exécuter des expressions dans le programme. Considérons le code JavaScript suivant :
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 résultat de res sera :
200 4 27
Implémentation dans Go
Dans Go, le une fonctionnalité équivalente est fournie par le package go/types. Voici comment obtenir la même chose dans Go :
Vous devrez définir votre propre package en utilisant types.NewPackage et types.Scope. Pour définir des constantes, utilisez types.NewConst, en fournissant les informations de type appropriées.
package main import ( "fmt" "go/types" ) func main() { // Create a new package and scope. pkg := types.NewPackage("example", "example.com/eval") scope := types.NewScope(pkg, types.RelativeToPkg, "") // Insert constants into the package's scope. x := types.NewConst(scope, "x", types.Int, types.NewInt64(10)) y := types.NewConst(scope, "y", types.Int, types.NewInt64(20)) // Define the expressions to be evaluated. exprA := "x * y" exprB := "2 + 2" exprC := "x + 17" // Evaluate the expressions. results := []int64{} for _, expr := range []string{exprA, exprB, exprC} { result, err := types.Eval(expr, scope) if err != nil { panic(err) } results = append(results, result.Int64()) } // Print the results. fmt.Println("Results:") for _, result := range results { fmt.Println(result) } }
En exécutant ce code Go, vous obtiendrez les mêmes résultats que dans l'exemple JavaScript :
200 4 27
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!