JavaScript의 Eval()과 같은 Go 코드/표현식 실행
JavaScript에서 eval() 메소드를 사용하면 다음을 기반으로 동적으로 코드를 실행할 수 있습니다. 문자열 입력. Go에서 유사한 기능을 사용할 수 있나요?
해결책
예, 다음 접근 방식을 사용하면 Go에서 유사한 기능을 구현할 수 있습니다.
패키지, 범위 및 상수 사용:
사용 예:
다음은 Go에서 간단한 표현식을 평가하는 방법을 보여주는 코드 조각입니다.
import ( "fmt" "go/types" ) func main() { // Create a new package pkg := types.NewPackage("mypkg", "github.com/example/mypkg") // Create a new scope scope := types.NewScope(pkg, nil) // Insert constants into the scope scope.Insert(types.NewConst("x", types.Int, types.NewInt64(10))) scope.Insert(types.NewConst("y", types.Int, types.NewInt64(20))) // Evaluate simple expressions expr1 := "x * y" expr2 := "2 + 2" expr3 := "x + 17" result1, _ := evaluate(pkg, scope, expr1) result2, _ := evaluate(pkg, scope, expr2) result3, _ := evaluate(pkg, scope, expr3) // Print the results fmt.Println(result1, result2, result3) } // evaluate takes a package, scope, and expression and evaluates the expression in the provided scope. func evaluate(pkg *types.Package, scope *types.Scope, expr string) (types.Object, error) { // Check the expression if expr == "" { return nil, fmt.Errorf("empty expression") } // Parse the expression parsed, err := types.ParseExpr(expr) if err != nil { return nil, err } // Evaluate the expression return pkg.Check(parsed.Pos(), parsed), nil }
이 코드는 사용자 정의 패키지의 범위를 사용하여 입력 문자열을 기반으로 코드를 동적으로 평가할 수 있습니다.
위 내용은 JavaScript의 eval()처럼 Go 코드를 어떻게 동적으로 실행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!