Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mencapai Fungsi `eval()` JavaScript dalam Go?

Bagaimana untuk Mencapai Fungsi `eval()` JavaScript dalam Go?

Susan Sarandon
Lepaskan: 2024-11-10 20:06:03
asal
806 orang telah melayarinya

How to Achieve the Functionality of JavaScript's `eval()` in 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;
Salin selepas log masuk

Hasil res ialah:

200
4
27
Salin selepas log masuk
Salin selepas log masuk

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)
    }
}
Salin selepas log masuk

Dengan menjalankan kod Go ini, anda akan memperoleh hasil yang sama seperti dalam contoh JavaScript:

200
4
27
Salin selepas log masuk
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan