如何在Golang中的运行时动态转换类型?

Lei Cao :

这是我的示例:http : //play.golang.org/p/D608cYqtO5

基本上我想这样做:

theType := reflect.TypeOf(anInterfaceValue)
theConvertedValue := anInterfaceValue.(theType)

记法

value.(type)

称为类型断言type断言中in必须在编译时知道,它始终是类型名称。

在您的游乐场示例中,SetStruct2可以使用类型开关为其第二个参数处理不同的类型:

switch v := value.(type) {
case Config:
    // code that uses v as a Config
case int:
    // code that uses v as an int
}

但是,您不能断言接口是动态的(例如在代码中)。因为否则编译器将无法对您的程序进行类型检查。

编辑:

如果没有其他方法,我不想一一列举吗?

您可以使用反射来进行类型无关的工作。然后,您可以在值上随机设置填充,但是如果您对类型执行非法操作,则将出现恐慌。

如果要从编译器的类型检查中受益,则必须枚举不同的情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Golang中在运行时动态设置数组的索引?

如何在Golang中创建结构运行时

如何在C#中检查运行时类型

运行时类型转换

如何在运行时将动态转换为未知类

如何在TypeScript中进行运行时类型转换?

如何在运行时使用预存储的 typeid(T) 进行类型转换?

如何在运行时动态关注输入元素

如何在Java运行时创建动态类

如何在运行时动态加载JAR文件?

如何在运行时动态更改依赖项

如何在Django的运行时添加动态字段

如何在运行时动态连接到DataSources?

如何在Java运行时动态创建对象

如何在运行时动态设置OmniAuth范围?

如何在运行时动态创建Predicate <T>

如何在Golang中使用运行时错误?

如何在C#Win-Forms中动态填充(运行时)数据网格视图

在Maven中,如何在运行时动态生成属性值?

如何在运行时在NodeJs中动态创建和调用函数

如何在Xamarin.Forms中的运行时动态添加条目字段

如何在运行时使用LambdaMetafactory访问动态类中的非静态方法

如何在运行时在 Raku 中动态访问模块的符号表?

SpringSecurity / Grails如何在运行时动态更改LoginUrlAuthenticationEntryPoint中的loginFormUrl?

如何在运行时(动态)在 Automation Anywhere 中将多个值存储在变量中?

动态转换的运行时检查

在Golang中,为什么这样的类型转换会导致运行时错误:索引超出范围?

如何在运行时获取对象类型?

如何在运行时检查Vue组件的类型?