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!