package main import "fmt" type Piyo struct { Name string } type Hoge interface { Foo() } type Fuga interface { Bar() } type Parent interface { Hoge Fuga } func (p *Piyo) Foo() { fmt.Println("foo") fmt.Println(p) } func (p *Piyo) Bar() { fmt.Println("bar") fmt.Println(p) } func baz(p Parent) { p.Foo() p.Bar() } func main() { v := Piyo{"hoge"} baz(&v) }