Go의 JS eval()과 동일
JavaScript의 eval()과 유사한 평가가 실제로 Go에서 수행될 수 있습니다. 이는 프로그램 내에서 표현식을 실행하는 데 특히 유용합니다. 다음 JavaScript 코드를 고려해 보세요.
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;
res의 결과는 다음과 같습니다.
200 4 27
Implementation in Go
Go에서는 동등한 기능은 go/types 패키지에서 제공됩니다. Go에서 동일한 결과를 얻을 수 있는 방법은 다음과 같습니다.
types.NewPackage 및 type.Scope를 사용하여 고유한 패키지를 정의해야 합니다. 상수를 정의하려면 type.NewConst를 사용하여 적절한 유형 정보를 제공하세요.
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) } }
이 Go 코드를 실행하면 JavaScript 예와 동일한 결과를 얻을 수 있습니다.
200 4 27
위 내용은 Go에서 JavaScript의 `eval()` 기능을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!