Heim >Backend-Entwicklung >Golang >Wie speichere ich uint64-Werte sicher im int64-Feld von PostgreSQL?

Wie speichere ich uint64-Werte sicher im int64-Feld von PostgreSQL?

Linda Hamilton
Linda HamiltonOriginal
2024-11-20 04:13:01196Durchsuche

How to Safely Store uint64 Values in PostgreSQL's int64 Field?

Konvertieren von uint64 in int64 für PostgreSQL-Speicher

Um die Speicherung eines uint64-Werts in PostgreSQL zu handhaben, das nur vorzeichenbehaftete 64-Bit-Ganzzahlen unterstützt (BIGINT) ist eine einfache Typkonvertierung am effektivsten. Dieser Ansatz behält die binäre Darstellung des uint64-Werts bei, während er in int64 umgewandelt wird.

Betrachten Sie den folgenden Go-Code:

import (
  "fmt"
)

func main() {
  i := uint64(0xffffffffffffffff) // Example uint64 value

  // Cast the uint64 to int64 using a type conversion
  i2 := int64(i)

  fmt.Println(i, i2)
}

Dieser Code gibt Folgendes aus:

18446744073709551615 -1

Wie Sie sehen, ist die Typkonvertierung des uint64-Werts (18446744073709551615) in einen int64-Wert (-1) gelungen. Dies liegt daran, dass die numerische Konvertierung zwischen uint64 und int64 nicht die Speicherdarstellung, sondern nur die Typinterpretation ändert.

Eine Einschränkung ist jedoch zu beachten: Wenn Sie versuchen, eine untypisierte Ganzzahlkonstante zu konvertieren, die den int64-Wert überschreitet Bereich, tritt ein Fehler bei der Kompilierung auf. Zum Beispiel:

i3 := int64(0xffffffffffffffff) // Compile time error!

Dieser Fehler tritt auf, weil der konstante Wert 0xffffffffffffffff den int64-Wertebereich (0x7fffffffffffffff) überschreitet.

Das obige ist der detaillierte Inhalt vonWie speichere ich uint64-Werte sicher im int64-Feld von PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn