Maison >développement back-end >Golang >Comment stocker en toute sécurité les valeurs uint64 dans le champ int64 de PostgreSQL ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 04:13:01196parcourir

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)
}

Ce code génère :

18446744073709551615 -1

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!

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!

Déclaration:
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