package main type Foo interface { methodA() string } type Bar struct { Foo } func (bar *Bar) methodA() string { return "foo bar" } func (bar *Bar) New() *Bar { return &Bar{} } type Baz struct { Foo *Foo } func main() { baz := Baz{Bar.New()} }