github.com/traefik/yaegi@v0.15.1/interp/example_eval_test.go (about) 1 package interp_test 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/traefik/yaegi/interp" 8 ) 9 10 // Generic example. 11 func Example_eval() { 12 // Create a new interpreter context 13 i := interp.New(interp.Options{}) 14 15 // Run some code: define a new function 16 _, err := i.Eval("func f(i int) int { return 2 * i }") 17 if err != nil { 18 log.Fatal(err) 19 } 20 21 // Access the interpreted f function with Eval 22 v, err := i.Eval("f") 23 if err != nil { 24 log.Fatal(err) 25 } 26 27 // Returned v is a reflect.Value, so we can use its interface 28 f, ok := v.Interface().(func(int) int) 29 if !ok { 30 log.Fatal("type assertion failed") 31 } 32 33 // Use interpreted f as it was pre-compiled 34 fmt.Println(f(2)) 35 36 // Output: 37 // 4 38 }