Как видно из заголовка, у меня есть структура, определенная в поле uint64 , но возвращается ошибка, когда я устанавливаю его значение как math.MaxUint64 .
Это мой код:
type MyDoc struct {
Number uint64 `bson:"_id"`
Timestamp int64 `bson:"time"`
}
// I just want to know whether uint64 overflows or not.
func main() {
mydoc := &MyDoc{
Number: math.MaxUint64,
Timestamp: time.Now().UnixNano(),
}
v, err := bson.Marshal(mydoc)
if err != nil {
panic(err)
}
fmt.Println(v)
}
После выполнения ошибка следующая:
panic: 18446744073709551615 overflows int64 [recovered]
panic: 18446744073709551615 overflows int64
Очевидно, uint64 типы данных обрабатываются как int64 чего я не ожидаю.
Итак, как хранить данные uint64, но не переполнять их в MongoDB ?? Вместо этого я не могу использовать строковый тип, потому что мне нужно сравнить размер числа для сортировки документов.
Я использую официальный драйвер MongoDB Go Драйвер.
Заранее спасибо!