我想通过使用struct / interface的字符串名称值将特定变量转换为特定的已定义struct / interface。
例如:
type Testing interface{}
和新变量
stringName := "Testing"
newTestingVariable.(stringName)
这可能是偶然的吗?也许使用反射?
干杯
这不可能。Go是一种静态类型的语言,这意味着必须在编译时知道变量和表达式的类型。
在类型断言中:
x.(T)
[…]如果类型断言成立,则表达式的值为存储在其中的值
x
,其类型为T
。
因此,您可以使用类型断言来获取(或测试)您指定的类型的值。
什么时候做:
stringName := "Testing"
newTestingVariable.(stringName)
会是什么 类型 的类型声明的结果?你没说 您指定了一个string
包含类型名称的值,但这只能在 运行时确定
。(是的,在上面的示例中,编译器可以跟踪作为常量值给出的值,但是在一般情况下,这在编译时是不可能的。)
因此,在编译时,编译器只能将其interface{}
用作类型表达式结果的类型,那么又有什么意义呢?
如果要动态地测试x
的类型T
(或者接口值是否x
实现T
),则可以对该类型(包reflect
)使用反射。在这种情况下,您将使用a
reflect.Type
来指定要测试的类型,而不是string
其名称的表示形式。
我的一个数据帧(spark.sql)有这个模式。 我需要将其保存到CSV文件,但不使用任何扁平化,以以下格式分解。 我直接使用了命令 ,这符合我的目的,但我需要一个更好的方法。我正在使用派斯帕克
我刚接触Apache POI和HttpClient,我很困惑。我的程序应该从excel单元格中获取值,并在HttpGet请求中使用该值。以下是不起作用的方法: wb.getSheetAt(0)。getRow(rowNumber)。get cell(3);是XSSFCell类型,我需要把它转换成一个字符串。这可能吗,还是我没有正确地提取这个值?
问题内容: 为了将类名存储在日志文件中,我将类类型的描述转换为字符串: 但是,我没有成功将其反向转换为类型的变量以在通用方法中使用它。 我该怎么办? 问题答案: 您可以从返回类,但是获取类名时需要使用项目的 模块 名。如果不使用模块名称,则它将返回,因为先前引用的类名称尚未完全由 模块名称 限定。您应该更改类名称字符串以表示您的类的完全限定名称:
问题内容: 我正在从在Varchar中具有原始提要的表中导入数据,我需要将varchar中的列导入到字符串列中。我尝试使用以及,但是却遇到了错误,因为有一些空字段,我需要将它们作为空或null检索到新表中。 请让我知道是否有相同的功能。 问题答案: 大胆猜测:如果您的值是一个空字符串,则可以使用NULLIF将其替换为NULL:
所以,基本上。我不想知道是否有可能(如果有可能,如何),实际上把一个类在C#代码中直接转换成一个字符串?因此,基本上,该类中的所有内容都进入字符串。 这有点短,但我不知道怎么说得更清楚。
我正在尝试有一个通量通用转换器使用通用类型在Java 8。我把我的代码建立在这个答案的基础上。其思想基本上是实现这个特定的转换器->: 类型转换器->转换为我想要的任何类型。因此,我正在使用构造函数创建一个类型为的类,并返回一个方法。我想在调用上创建类似这样的多个条目:,但类类型不同。但它甚至对整数也不起作用。 当我使用此单元测试进行测试时,我得到错误:。