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