我遇到过这样一种情况,我有一些可能是无穷大/NaN 的 float64 字段,并且尝试编组到 JSON 会导致有关不支持 +Inf 类型的错误。
type Something interface {
Id string `firestore:"id"`
NumberA float64 `firestore:"numberA"`
NumberB float64 `firestore:"numberB"`
NumberC float64 `firestore:"numberC"`
}
该结构最初是通过另一个库 (Google Firestore) 填充的。
实际上,这个结构要大得多,有更多的浮动字段。
我想我可以使用类似下面这个循环的东西,使用反射来找到它们,尽管我想知道是否有更简洁的方法或更惯用的方法。
v := reflect.ValueOf(structVar)
typeOfS := v.Type()
for i := 0; i< v.NumField(); i++ {
if typeOfS.Field(i).Type.Kind() == reflect.Float64 && math.IsInf(v.Field(i).Interface().(float64), 1) {
// ... some logic I'll put here
}
}
我不明白如何实现自定义编组,所以也许这可能是处理 +Inf 的一个选项?
慕田峪4524236
烙印99
相关分类