github.com/traefik/yaegi@v0.15.1/interp/self_example_test.go (about) 1 package interp_test 2 3 import ( 4 "log" 5 6 "github.com/traefik/yaegi/interp" 7 "github.com/traefik/yaegi/stdlib" 8 ) 9 10 func ExampleInterpreter_self() { 11 i := interp.New(interp.Options{}) 12 13 if err := i.Use(stdlib.Symbols); err != nil { 14 log.Fatal(err) 15 } 16 if err := i.Use(interp.Symbols); err != nil { 17 log.Fatal(err) 18 } 19 20 _, err := i.Eval(`import ( 21 "fmt" 22 "log" 23 24 // Import interp to gain access to Self. 25 "github.com/traefik/yaegi/interp" 26 )`) 27 if err != nil { 28 log.Fatal(err) 29 } 30 31 _, err = i.Eval(` 32 // Evaluate code directly. 33 fmt.Println("Hello Yaegi from Go") 34 35 // Evaluate code indirectly via the Self access point. 36 _, err := interp.Self.Eval("fmt.Println(\"Hello Yaegi from Yaegi\")") 37 if err != nil { 38 log.Fatal(err) 39 } 40 `) 41 if err != nil { 42 log.Fatal(err) 43 } 44 45 // Output: 46 // 47 // Hello Yaegi from Go 48 // Hello Yaegi from Yaegi 49 }