在 Golang 中将未知接口转换为 float64

所以我收到了一个接口{},但我想以任何可能的方式将其转换为 float64 或如果不可能则返回错误。


这是我在做什么:


func getFloat(unk interface{}) (float64, error) {

    if v_flt, ok := unk.(float64); ok {

        return v_flt, nil

    } else if v_int, ok := unk.(int); ok {

        return float64(v_int), nil

    } else if v_int, ok := unk.(int16); ok {

        return float64(v_int), nil

    } else ... // other integer types

    } else if v_str, ok := unk.(string); ok {

        v_flt, err := strconv.ParseFloat(v_str, 64)

        if err == nil {

            return v_flt, nil

        }

        return math.NaN(), err

    } else if unk == nil {

        return math.NaN(), errors.New("getFloat: unknown value is nil")

    } else {

        return math.NaN(), errors.New("getFloat: unknown value is of incompatible type")

    }

}

但我觉得我走错了路,有没有更好的方法来做到这一点?


白衣染霜花
浏览 288回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go