package main import "fmt" type Fooer interface { Foo() int } type SomeFooer struct { val int } func (s SomeFooer) Foo() int { return s.val } type AnotherFooer struct { a, b, c int } func (s AnotherFooer) Foo() int { return s.a } func printEface(a, b, c, d interface{}) { fmt.Println(a, b, c, d) // Set breakpoint 1 } func printIface(a, b Fooer) { fmt.Println(a, b) // Set breakpoint 2 } func main() { sf := SomeFooer{9} af := AnotherFooer{-1, -2, -3} printEface(1,2.0, sf, af) printIface(sf, af) }