package main
import "fmt"
import "reflect"
type Stringer interface {
String() string
}
type MyInt int
func (m MyInt) String() string {
return fmt.Sprintf("I'm number %d!", m)
}
func main() {
defer func() { fmt.Println(recover()) }()
var m = MyInt(10)
m_type := reflect.TypeOf(m)
fmt.Println(m_type.Implements(reflect.TypeOf((*Stringer)(nil)).Elem()))
fmt.Println(m_type.Implements(reflect.TypeOf(Stringer(nil)))) // This does not work.
}
cGFja2FnZSBtYWluCmltcG9ydCAiZm10IgppbXBvcnQgInJlZmxlY3QiCgp0eXBlIFN0cmluZ2VyIGludGVyZmFjZSB7CiAgICBTdHJpbmcoKSBzdHJpbmcKfQoKdHlwZSBNeUludCBpbnQKCmZ1bmMgKG0gTXlJbnQpIFN0cmluZygpIHN0cmluZyB7CiAgICByZXR1cm4gZm10LlNwcmludGYoIkknbSBudW1iZXIgJWQhIiwgbSkKfQoKZnVuYyBtYWluKCkgewoJZGVmZXIgZnVuYygpIHsgZm10LlByaW50bG4ocmVjb3ZlcigpKSB9KCkKICAgIHZhciBtID0gTXlJbnQoMTApCiAgICBtX3R5cGUgOj0gcmVmbGVjdC5UeXBlT2YobSkKCglmbXQuUHJpbnRsbihtX3R5cGUuSW1wbGVtZW50cyhyZWZsZWN0LlR5cGVPZigoKlN0cmluZ2VyKShuaWwpKS5FbGVtKCkpKQogICAgZm10LlByaW50bG4obV90eXBlLkltcGxlbWVudHMocmVmbGVjdC5UeXBlT2YoU3RyaW5nZXIobmlsKSkpKSAvLyBUaGlzIGRvZXMgbm90IHdvcmsuCn0=