Go 速習チュートリアル

Go 言語の整数型

1. Goの整数型とは

インテジャー(Integer)データ型は、35、-50、1345000といった、小数を含まない整数を保存するために使用されます。

Goの整数型には、大きく分けて以下の2つのカテゴリーがあります:

  • 符号付き整数 (Signed integers) - 正の値と負の値の両方を保存できます。
  • 符号なし整数 (Unsigned integers) - 非負(0以上)の値のみを保存できます。

       Tips: 整数型のデフォルトは int です。型を明示的に指定しない場合、バリアブルの型は自動的に int になります。

2. 符号付き整数 (Signed Integers)

符号付き整数は、int キーワードのいずれかを使用して宣言され、正負両方のバリューを保持できます。

コード例:

package main
import ("fmt")

func main() {
  var x int = 500
  var y int = -4500
  fmt.Printf("タイプ: %T, バリュー: %v\n", x, x)
  fmt.Printf("タイプ: %T, バリュー: %v", y, y)
}

Goには、5種類の符号付き整数キーワード(型)が存在します:

型 (Type)サイズ範囲 (Range)
intプラットフォームに依存:
32ビットシステムでは32ビット
64ビットシステムでは64ビット
32ビット:-2,147,483,648 〜 2,147,483,647
64ビット:-9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807
int88ビット / 1バイト-128 〜 127
int1616ビット / 2バイト-32,768 〜 32,767
int3232ビット / 4バイト-2,147,483,648 〜 2,147,483,647
int6464ビット / 8バイト-9,223,372,036,854,775,808 〜 9,223,372,036,854,775,807

3. 符号なし整数 (Unsigned Integers)

符号なし整数は、uint キーワードのいずれかを使用して宣言され、非負のバリューのみを保存できます。

コード例:

package main
import ("fmt")

func main() {
  var x uint = 500
  var y uint = 4500
  fmt.Printf("タイプ: %T, バリュー: %v\n", x, x)
  fmt.Printf("タイプ: %T, バリュー: %v", y, y)
}

Goには、5種類の符号なし整数キーワード(型)が存在します:

型 (Type)サイズ範囲 (Range)
uintプラットフォームに依存:
32ビットシステムでは32ビット
64ビットシステムでは64ビット
32ビット:0 〜 4,294,967,295
64ビット:0 〜 18,446,744,073,709,551,615
uint88ビット / 1バイト0 〜 255
uint1616ビット / 2バイト0 〜 65,535
uint3232ビット / 4バイト0 〜 4,294,967,295
uint6464ビット / 8バイト0 〜 18,446,744,073,709,551,615

4. どの整数型を使うべきか?

どの整数型を選択するかは、バリアブルに保存する必要があるバリューの範囲(Range)によって決まります。

エラーになる例:
以下の例では、1000 という値が int8 の範囲(-128 〜 127)を超えているため、エラーが発生します。

package main
import ("fmt")

func main() {
  var x int8 = 1000
  fmt.Printf("タイプ: %T, バリュー: %v", x, x)
}

実行結果:

./prog.go:5:7: constant 1000 overflows int8

1000int8オーバーフローさせています、というエラーメッセージが表示されます。)