Maison > développement back-end > Golang > le corps du texte

Comment stocker en toute sécurité les valeurs uint64 dans le champ int64 de PostgreSQL ?

Linda Hamilton
Libérer: 2024-11-20 04:13:01
original
154 Les gens l'ont consulté

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

Conversion de uint64 en int64 pour le stockage PostgreSQL

Pour gérer le stockage d'une valeur uint64 dans PostgreSQL, qui ne prend en charge que les entiers signés de 64 bits (BIGINT), une simple conversion de type est la plus efficace. Cette approche préserve la représentation binaire de la valeur uint64 tout en la convertissant en int64.

Considérez le code Go suivant :

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)
}
Copier après la connexion

Ce code génère :

18446744073709551615 -1
Copier après la connexion

Comme vous pouvez le constater, la conversion de type de la valeur uint64 (18446744073709551615) en valeur int64 (-1) est un succès. En effet, la conversion numérique entre uint64 et int64 ne modifie pas la représentation de la mémoire mais uniquement l'interprétation du type.

Cependant, une mise en garde à noter est que si vous essayez de convertir une constante entière non typée qui dépasse la valeur int64 plage, une erreur de compilation se produira. Par exemple :

i3 := int64(0xffffffffffffffff) // Compile time error!
Copier après la connexion

Cette erreur se produit car la valeur constante 0xffffffffffffffff dépasse la plage de valeurs int64 (0x7fffffffffffffff).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal