这个问题不是很明确,可以用两种方式解释,一种是不可能的,另一种是不可能的。另一个答案是肯定的,这是可能的。
在运行时
如果将类型名称作为
string值提供,那么在运行时就不可能,因为未明确引用的类型可能无法编译为最终的可执行二进制文件(因此显然在运行时变得不可访问,“未知”)。
在“编码”时间
如果我们正在谈论“编码”时间(编写/生成源代码),那么就可以不创建/分配给定类型的变量,而无需调用
reflect.TypeOf()和传递该变量。
您可以从 指向 该类型的 指针 开始,并使用没有分配的
类型化nil
_指针值,并且可以使用来从其reflect.Type
描述符导航到指针的
_基本 类型(或 元素 类型)的描述符
Type.Elem()。
它是这样的:
t := reflect.TypeOf((*YourType)(nil)).Elem()
t上面的类型描述符与
t2下面的相同:
var x YourTypet2 := reflect.TypeOf(x)fmt.Println(t, t2)fmt.Println(t == t2)
以上应用程序的输出(在Go Playground上尝试):
main.YourType main.YourTypetrue