Go语言中的反射应用:获取结构体的类型名
2023-12-25#Go
本文介绍一种获取结构体的类型名的方法。
使用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
接口即可。
加载中...