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

Susan Sarandon
Lepaskan: 2024-11-10 20:06:03
asal
707 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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan