我有一个接口:
type Printer interface {
Print(s string)
}
和一个函数:
func fxyz(name string) {
....
}
我想用"Printer"调用fxyz,但我不想硬编码字符串。
如何使用反射或其他方法获取接口名称?
如果您想获得接口的名称,可以使用reflect
:
name := reflect.TypeOf((*Printer)(nil)).Elem().Name()
fxyz(name)
游乐场:http://play.golang.org/p/Lv6-qqqQsH.
注意,不能只取reflect.TypeOf(Printer(nil)).Name()
,因为TypeOf
将返回nil
。