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接口即可。


加载中...