| package main | |
| var called bool | |
| type I interface { | |
| Foo() | |
| } | |
| type A struct{} | |
| func (a A) Foo() { | |
| called = true | |
| } | |
| func lambda[X I]() func() func() { | |
| return func() func() { | |
| var x X | |
| return x.Foo | |
| } | |
| } | |
| func main() { | |
| lambda[A]()()() | |
| if !called { | |
| panic(called) | |
| } | |
| } |