package main import "fmt" type Speaker interface { Speak() string } type cat struct { name string } func catDetails(c cat) { fmt.Printf("(%v, %T)\n", c, c) } func emptyDetails(s interface{}) { fmt.Printf("(%v, %T)\n", s, s) } func main() { c := cat{"oreo"} i := 99 b := false str := "test" catDetails(c) emptyDetails(c) emptyDetails(i) emptyDetails(b) emptyDetails(str) }