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

use*_*244 5 go

Golang中如何通过另一个值的reflect.Type来转换值类型可能是这样的:

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

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

Pau*_*kin 5

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