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)
}
}