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