Open karelorigin opened 1 year ago
sample.go
package main import "fmt" type Interface interface { Say() } type sayer struct { Interface } func (s sayer) Say() { fmt.Println("Hello there!") } type derived struct { sayer } func Cast(v interface{}) (Interface, error) { i, ok := v.(Interface) if !ok { return nil, fmt.Errorf("type %T does not implement Interface", v) } return i, nil } func run() error { i, err := Cast(derived{}) if err != nil { return err } i.Say() return nil } func main() { if err := run(); err != nil { fmt.Println("A fatal error occured:", err) } }
$ go run cast-issue.go // Hello there!
$ yaegi ./cast-issue.go // A fatal error occured: type struct { Xsayer struct { Interface interp.valueInterface } } does not implement Interface
68a430f
No response
The following program
sample.go
triggers an unexpected resultExpected result
Got
Yaegi Version
68a430f
Additional Notes
No response