所以我收到了一个接口{},但我想以任何可能的方式将其转换为 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") }}但我觉得我走错了路,有没有更好的方法来做到这一点?
2 回答
- 2 回答
- 0 关注
- 287 浏览
添加回答
举报
0/150
提交
取消