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

如何获取类型的字符串表示形式?

晏修诚
2023-03-14
问题内容

假设我html" target="_blank">定义了以下类型:

type ID uuid.UUID

我将如何以编程方式将类型作为字符串获取,因此以后可能很容易重构,而不是:

fmt.Sprintf("%T", ID{})

我不太喜欢,因为它实例化了它,也可以从Interface实例化。


问题答案:

您可以使用包装reflectfmt包装也可以在内部使用)。您可以从
指向 该类型的 指针 开始,并使用没有分配的
类型化nil_指针值,并且可以使用来从其reflect.Type描述符导航到指针的
_基本
类型(或 元素 类型)的描述符Type.Elem()

例:

t := reflect.TypeOf((*ID)(nil)).Elem()
name := t.Name()
fmt.Println(name)

输出(在Go Playground上尝试):

ID

注意:请注意,Type.Name()可能会返回一个空值string(如果Type表示未命名的类型)。如果您正在使用类型声明(带有type关键字),则您已经命名了该类型,因此Type.Name()将返回一个非空的类型名称。但是*[]string,例如,将上面的代码用于类型变量将为您提供一个空字符串:

var s *[]string
t := reflect.TypeOf(s).Elem()
name := t.Name()
fmt.Printf("%q", name)

输出(在Go Playground上尝试):

""


 类似资料:
  • 问题内容: 我有一个C python扩展名,我想打印一些诊断信息。 我收到一个字符串作为PyObject *。 获取此对象的字符串表示形式(使其可用作const char *)的规范方法是什么? 更新: 澄清以强调访问为const char *。 问题答案: 使用(模仿Python的函数)或(模仿),然后调用get (您可以并且通常应该将其用作,例如: 任何人都可以使用此方法。如果您完全确定是Py

  • 问题内容: 对于我的应用程序,字符串是否为人类可读的都没有关系。 问题答案: 将结构编码为字符串的一种流行方法是使用JSON。 您有某些限制,例如无法获取所有信息(例如,每个字段的特定类型),仅序列化导出的字段以及不处理递归值。但这是序列化数据的简单标准方法。 工作示例: 给出以下输出: https://play.golang.org/p/sx-xdSxAOG

  • 问题内容: 在Java中,我可以覆盖类的方法。然后,Java的print函数将打印由其定义的对象的字符串表示形式。是否有与Java等效的Python ? 例如,我有一个PlayCard类。我有一个PlayCard实例c。现在: 但是我想要的是这样的: 如何自定义类实例的字符串表示形式? 我正在使用Python 3.x 问题答案: 与Java最接近的等效项是为您的类实现。将其放在您的类定义中: 您可

  • 问题内容: 假设我有一个这样的类(并进一步假设所有私有变量: 现在,如果要构建此类的toString()表示形式,则可以在Item类中执行以下操作: 但是,如果我在类中说了15个私有变量,该怎么办?我是否需要像这样写出每个变量的名称? 理想情况下,我想遍历该类的私有变量列表并构造字符串表示形式来结束任务: 也许是toJSON方法,我仍然需要访问这些变量的名称。有什么建议? 问题答案: 您可以这样做

  • 问题内容: 我有一个名字叫类的名字(没有扩展名)。我想将其分配给变量,如下所示: 我怎样才能做到这一点? 问题答案: 但是您应该是完全合格的-即

  • 我找不到如何用Kotlin语言将变量(或常量)的类型作为,像。如何完成这一点?