登录
首页 >  Golang >  Go问答

利用 Golang 反射提取结构类型定义的属性,无需初始化

来源:stackoverflow

时间:2024-03-12 16:12:27 410浏览 收藏

从现在开始,努力学习吧!本文《利用 Golang 反射提取结构类型定义的属性,无需初始化》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

如果我有以下声明

type foo struct {
   bar string
}

我可以使用反射来检查声明上的属性而不初始化它吗?

keys := reflect.something(Foo)

for _, key := range keys {
    fmt.Println(key) // "bar"
}

解决方案


使用reflect.TypeOf获取foo的reflect.type。

t := reflect.typeof(foo{})

如果您不想创建该类型的值,则获取指针类型并“取消引用”该类型。

t := reflect.typeof((*foo)(nil)).elem()

表达式 (*foo)(nil) 返回一个指向该类型的 nil 指针。 Type.Elem方法返回指向的类型。

迭代类型上的字段。 Type.NumField 返回类型的字段数。 Type.Field 按字段索引返回 StructField

for i := 0; i < t.NumField; i++ {
    fmt.Println(t.Field(i).Name)
}

Run it on the playground

今天关于《利用 Golang 反射提取结构类型定义的属性,无需初始化》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>