ホームページ > バックエンド開発 > Golang > uint64 値を PostgreSQL の int64 フィールドに安全に保存するにはどうすればよいですか?

uint64 値を PostgreSQL の int64 フィールドに安全に保存するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-20 04:13:01
オリジナル
194 人が閲覧しました

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

PostgreSQL ストレージ用に uint64 を int64 に変換する

符号付き 64 ビット整数のみをサポートする PostgreSQL で uint64 値のストレージを処理するには(BIGINT) の場合、単純な型変換が最も効果的です。このアプローチでは、uint64 値を int64 にキャストするときにそのバイナリ表現が保持されます。

次の Go コードを考えてみましょう。

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)
}
ログイン後にコピー

このコードの出力は次のとおりです。

18446744073709551615 -1
ログイン後にコピー

ご覧のとおり、uint64 値 (18446744073709551615) から int64 値 (-1) への型変換は成功しています。これは、uint64 と int64 の間の数値変換ではメモリ表現は変更されず、型の解釈のみが変更されるためです。

ただし、注意すべき点は、int64 値を超える型なし整数定数を変換しようとした場合です。範囲を超えた場合、コンパイル時エラーが発生します。例:

i3 := int64(0xffffffffffffffff) // Compile time error!
ログイン後にコピー

このエラーは、定数値 0xffffffffffffffff が int64 値の範囲 (0x7fffffffffffffff) をオーバーフローしているために発生します。

以上がuint64 値を PostgreSQL の int64 フィールドに安全に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート