[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パッケージを使って適切に処理してくれるためだそうです。

見た目だけだと、不思議に思える動きも説明されるとなるほどと思えて面白い。


この記事が気に入ったらサポートをしてみませんか?