我有一个简单的函数,如下所示:
func convertToRealNum(number interface{}) interface{}{
switch v := number.(type) {
default:
log.Fatal("unexpected type %T", v)
case sql.NullFloat64:
newNumber := number.Float64
case sql.NullInt64:
newNumber := number.Int64
}
return newNumber
}
number 是 aNullFloat64或 a NullInt64。如果 number 是 NullFloat64 类型,我会调用 number.Float64 并将数字的值作为 Float64 取回。如果我尝试在一个函数中调用相同的东西,该函数将 number 作为参数作为 interface{} 我得到编译错误:
number.Float64 undefined (type interface {} has no field or method Float64)
在函数内部,如果我调用reflect.TypeOf(number),它将返回NullFloat64,因此它知道它是什么类型,但我不能调用该类型的方法。
江户川乱折腾
相关分类