当前位置: 首页 > 面试题库 >

如何确定类型是否是Golang中的结构

巫晋鹏
2023-03-14
问题内容

假设我有2个结构:

type Base struct {
 id int
 name string
}

type Extended struct {
 Base
 Email string
 Password string
}

我想反映扩展结构来获取它的领域:

e := Extended{}
e.Email = "me@mail.com"
e.Password = "secret"

for i := 0 ; i < reflect.TypeOf(e).NumField() ; i++ {
  if reflect.TypeOf(e).Field(i) != "struct" {  << how to do this validation?
    fmt.Println(reflect.ValueOf(e).Field(i))
  }
}

问题答案:

只需检查值的Kind()

if reflect.ValueOf(e).Field(i).Kind() != reflect.Struct {
    fmt.Println(reflect.ValueOf(e).Field(i))
}


 类似资料:
  • 我有这样的代码 现在,为了打印值,如果T是一个类,我想调用对象的打印函数,但是如果T是一个基本数据类型,我只想使用printf。 那么,如何确定模板类型是基本数据类型还是类?

  • 问题内容: 我需要确定给定的Python变量是原生类型的实例:,,,,,等。有优雅的方法吗? 还是这是唯一的方法: 问题答案: 实现此目的的最佳方法是在称为和的元组列表中收集类型: 该模块包含所有重要类型的集合,这些集合可以帮助构建列表/元组。 从Python 2.2开始工作

  • 问题内容: 假设我有两种类似的类型设置为: 知道它们具有相同的字段,是否有直接的方法将值从类型1写入类型2?(除了编写将所有字段从源复制到目标的循环外) 谢谢。 问题答案: 对于您的特定示例,您可以轻松地将其转换:

  • 我正在通过反射动态实例化一个对象,方法是将字段名称与地图中类似的命名键进行匹配。其中一个字段是字符数组(char[]): 在plinko迭代器中,我为目标类上的类型编写了代码,例如。 例如,其中将是 如果field dClass类型是char[],要测试的表达式是什么?

  • 问题内容: 我有一个需要用户输入密码的应用程序。 我想要做的是从控制台读取密码(如果操作系统支持unix)或显示JOptionPane并要求用户输入密码(如果操作系统支持图形界面(例如Windows))。 有人可能会争辩说,在上述两种情况下控制台始终可用,因此控制台输入就足够了。但是问题是,如果Java应用程序开始使用javaw.exe,则控制台不可用。因此,我需要一种方法来确定我是否可以做任何一