[Go]bigパッケージと定数
『入門Goプログラミング』の"LESSON 8 ビッグナンバー"を読んでいて、bigパッケージと定数の扱いの話を知ったのでメモ。
非常に大きなサイズの数を扱うときには、bigパッケージを使う。
// こちらはコンパイルエラー
var i int64 = 24000000000000000000
// こちらはコンパイルエラーにならない
bi := new(big.Int)
bi.SetString("24000000000000000000", 10)
この話は変数の場合にあてはまる。
定数の場合は、以下のように書いてもコンパイルエラーにならない。大きな数を直接使える。
//定数として宣言すればコンパイルエラーにならない
const number = 24000000000000000000
//リテラル値も定数なのでコンパイルエラーにならない
fmt.Println(24000000000000000000/299792/86400)
定数とリテラルの計算は、プログラム実行時ではなくコンパイル時に行われ、GoのコンパイラはGoで書かれており大きな数をbigパッケージを使って適切に処理してくれるためだそうです。
見た目だけだと、不思議に思える動きも説明されるとなるほどと思えて面白い。
この記事が気に入ったらサポートをしてみませんか?