「A Tour of Go」というチュートリアルサイトを進めていくうちに、下記のように<<
という知らない記述方法が出てきたので調べました。
basic-types.go
MaxInt uint64 = 1<<64 - 1
fmt.Printf("Value: %v", MaxInt)
※「A Tour of Go」のBasic types(11/17) から抜粋
<<
や>>
の意味
<<
や>>
は**「ビット演算子」**と呼ばれるものです。
**「ビット演算子」**を使うことで、数値を2進数で表記したときに<<
は左へ、>>
は右へとずらすことができます。
1<<64 - 1
の計算結果
1<<64
は、2進数として1
を左に64
ずらすことになります。
そして、1
を左に64
ずらした値を2進数から10進数に変換して-1
を計算した結果、MaxInt
は18446744073709551615
という値で出力されることになります。
Value: 18446744073709551615