如何在Golang中通过另一个值的reflect.Type转换值类型

时间:2014-05-20 08:18:21

标签: go

如何在Golang中使用另一个值的reflect.Type转换值类型 也许是这样的:

func  Scan(value interface{}, b string) error {
    converted := value.(reflect.TypeOf(b)) // do as "value.(string)"
    return nil
}

如何在golang中正确地做到这一点?

1 个答案:

答案 0 :(得分:3)

从接口中获取类型化值的唯一方法是使用类型断言,语法为value.(T),其中T是一个类型。这有一个很好的理由,因为它使类型断言表达式的类型可计算:value.(T)具有类型T.相反,您允许value.(E)其中E是表达式评估为reflect.Type(我认为这是你的问题的要点),然后编译器无法(通常)静态地确定value.(E)的类型,因为它取决于结果任意计算。