Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencapai Fungsi `eval()` JavaScript dalam Go?
JS eval() Setara dalam Go
Penilaian yang serupa dengan eval() JavaScript memang boleh dilakukan dalam Go. Ini amat berguna untuk melaksanakan ungkapan dalam program. Pertimbangkan kod JavaScript berikut:
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;
Hasil res ialah:
200 4 27
Pelaksanaan dalam Go
In Go, the fungsi yang setara disediakan oleh pakej go/types. Begini cara anda boleh mencapai perkara yang sama dalam Go:
Anda perlu menentukan pakej anda sendiri menggunakan jenis.Pakej Baharu dan jenis.Skop. Untuk menentukan pemalar, gunakan jenis.NewConst, memberikan maklumat jenis yang sesuai.
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) } }
Dengan menjalankan kod Go ini, anda akan memperoleh hasil yang sama seperti dalam contoh JavaScript:
200 4 27
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi `eval()` JavaScript dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!