interface Animal { name() } struct Cat {} fn (c Cat) name(s string) {} fn foo(a Animal) {} fn main() { foo(Cat{}) }