Go语言中的反射应用:获取结构体的类型名
· 约 1 分钟阅读
本文介绍一种获取结构体的类型名的方法。
使用reflect库可获取结构体的类型名:
func GetName(instance interface{}) string { instanceType := reflect.TypeOf(instance) return instanceType.Name()}如果想定制化某些实例的名字,那么可以结合接口一起实现。比如,每个结构体对应一张数据库表,数据库表的名字就是结构体的名字,即可使用上面的GetName实现;但某些结构体对应的名字比较特殊,需要特殊设置,那么可以Get的实现如下所示:
type Tabler interface { TableName() string}
func GetName(instance interface{}) string { instanceType := reflect.TypeOf(instance) if v, ok := instance.(Tabler); ok { return v.TableName() } return instanceType.Name()}对于那些需要特殊设置的结构体,实现Tabler接口即可。