Heim >Backend-Entwicklung >Golang >Wie kann ich uint64-Hashwerte trotz Größenbeschränkungen im BIGINT von PostgreSQL speichern?
Bewusst überlaufende Ganzzahlen für die PostgreSQL-Speicherung
Im Zusammenhang mit der Speicherung von uint64-Hashwerten, die die Größe des BIGINT-Datentyps von PostgreSQL (signed) überschreiten 64 Bit) besteht eine gängige Lösung darin, uint64 in int64 umzuwandeln, indem einfach der Typ ohne geändert wird Ändern der binären Darstellung.
Lösung:
i := uint64(0xffffffffffffffff) i2 := int64(i)
Mit dieser Typkonvertierung wird der uint64-Wert einer int64-Variablen zugewiesen, während seine ursprüngliche binäre Darstellung erhalten bleibt. Dies ist möglich, weil die Konvertierung nicht die Speicherdarstellung des Werts ändert, sondern nur seinen Typ.
Ausgabe:
18446744073709551615 -1
Die Konvertierung von uint64 in int64 erfolgt immer erfolgreich, unabhängig vom Wert. Es ist jedoch wichtig zu beachten, dass die Konvertierung eines untypisierten ganzzahligen Konstantenwerts in int64 zu einem Fehler bei der Kompilierung führen kann, wenn er den Maximalwert überschreitet, der durch int64 (0x7fffffffffffffff) dargestellt werden kann.
Das obige ist der detaillierte Inhalt vonWie kann ich uint64-Hashwerte trotz Größenbeschränkungen im BIGINT von PostgreSQL speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!