JS eval()-Äquivalent in Go
Bewertungen ähnlich wie JavaScripts eval() können tatsächlich in Go durchgeführt werden. Dies ist besonders nützlich, um Ausdrücke innerhalb des Programms auszuführen. Betrachten Sie den folgenden JavaScript-Code:
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;
Das Ergebnis von res wird sein:
200 4 27
Implementierung in Go
In Go, the Eine entsprechende Funktionalität wird vom Paket go/types bereitgestellt. So können Sie dasselbe in Go erreichen:
Sie müssen Ihr eigenes Paket mithilfe von „types.NewPackage“ und „types.Scope“ definieren. Um Konstanten zu definieren, verwenden Sie „types.NewConst“ und geben Sie die entsprechenden Typinformationen an.
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) } }
Durch die Ausführung dieses Go-Codes erhalten Sie die gleichen Ergebnisse wie im JavaScript-Beispiel:
200 4 27
Das obige ist der detaillierte Inhalt vonWie erreicht man die Funktionalität von JavaScripts „eval()' in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!