I have a interface:
type Printer interface {
Print(s string)
}
并且有一个函数:
func fxyz(name string) {
....
}
我希望能够通过反射或其他方法获取接口名称,以便使用“Printer”调用fxyz,但我不想硬编码该字符串。
I have a interface:
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
。