获取结构体中的字段名称

2024年 2月 6日 75.9k 0

获取结构体中的字段名称

问题内容

我编写了一个程序来检索结构内的字段名称,并且它工作得很好。但是,当涉及到结构体内部的结构体指针时,它不起作用。

https://go.dev/play/p/pHrNRhfZSM4

在检查类型指针结构时,它使用反射包显示“Ptr”,但是当我执行 Elem() 时,它说有什么方法可以解决这个问题吗?

我只想获取 MAP 中带有“encr”标记的每个字段名称。

正确答案

使用类型而不是值:

func getencfields(t reflect.type, list map[string]int) {
// dereference pointer types.
for t.kind() == reflect.ptr {
t = t.elem()
}
// look for tags in struct fields.
if t.kind() == reflect.struct {
for i := 0; i 登录后复制

调用方法如下:

listOfEncTags := make(map[string]int)
getEncFields(reflect.TypeOf(Gadget{}), listOfEncTags)
fmt.Println(listOfEncTags)

登录后复制

https://www.php.cn/link/761213bcd999998a5b22d22b13db075f

以上就是获取结构体中的字段名称的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论