使用反射在Golang中打印结构指针字段类型

电路:

我有一个结构,并且尝试遍历所有字段以确定该字段是否为地图(或指向地图的指针)。我能够比较字段种类以反映非指针字段的Map.Map,但是我很难对指针字段做同样的事情。如果该字段具有值,则可以使用Elem()确定指针字段的类型,但是如果该字段为nil,则该方法将不起作用,并且我会得到“无效”的信息。关于如何做到这一点的任何想法?操场在这里。

package main

import (
    "fmt"
    "reflect"
)

type Item struct {
    itemMap    map[string]interface{}
    itemMapPtr *map[string]interface{}
}

func main() {
    item := new(Item)
    printTypes(*item)
}

func printTypes(item Item) {
    itemVal := reflect.ValueOf(item)
    for i := 0; i < itemVal.NumField(); i++ {
        fieldVal := itemVal.Field(i)
        if fieldVal.Kind() == reflect.Ptr {
            fieldVal = fieldVal.Elem() // This is only helpful if the field is not nil
        }
        fmt.Println(fieldVal.Kind())
    }
}
松饼上衣:

使用类型而不是

t := reflect.TypeOf(item)
for i := 0; i < t.NumField(); i++ {
    ft := t.Field(i).Type
    if ft.Kind() == reflect.Ptr {
        ft = ft.Elem()
    }
    fmt.Println(ft.Kind())
}

游乐场的例子

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

使用反射在Java Map中设置或获取数组

来自分类Java

使用反射在字段上调用方法

来自分类Java

使用反射在Java中创建通用的参数化类

来自分类Java

如何使用反射在Java中调用void方法

来自分类Dev

如何使用反射在Golang中创建和设置基本体

来自分类Dev

使用反射访问结构中的结构字段

来自分类Dev

如何使用反射包操纵结构中的地图字段?

来自分类Dev

使用反射比较结构字段

来自分类Dev

使用反射解引用结构指针和访问字段

来自分类Dev

如何使用反射在Go中查找空结构值?

来自分类Dev

使用反射在Go中创建地图

来自分类Dev

使用反射附加到结构中的切片字段

来自分类Dev

Golang使用反射在结构中设置零字符串指针值

来自分类Dev

当字段是指向x的指针时,使用反射设置结构字段的值

来自分类Dev

使用反射更新结构字段

来自分类Dev

反射匿名结构字段指针

来自分类Dev

Golang使用反射设置结构字段

来自分类Dev

golang反射,获取指向结构字段值的指针

来自分类Dev

[Golang]与使用指针类型,使用指针类型或结构类型调用方法不同吗?

来自分类Dev

Golang反射:从结构字段获取标签

来自分类Dev

使用反射在protobuf中设置重复字段

来自分类Dev

使用反射在`this`类中查找私有字段,并将其实例化

来自分类Dev

使用反射在结构内获取结构

来自分类Dev

使用反射在Java中动态创建对象

来自分类Dev

使用反射在单元测试中设置属性

来自分类Dev

如何使用反射在结构中初始化 nil 切片

来自分类Dev

golang中如何使用结构体指针

来自分类Dev

使用反射在程序集类型中查找 Interface<T>

来自分类Dev

如何使用反射在Java中获取注释的属性?

Related 相关文章

热门标签

归档