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 |
| int8 | 8ビット / 1バイト | -128 〜 127 |
| int16 | 16ビット / 2バイト | -32,768 〜 32,767 |
| int32 | 32ビット / 4バイト | -2,147,483,648 〜 2,147,483,647 |
| int64 | 64ビット / 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 |
| uint8 | 8ビット / 1バイト | 0 〜 255 |
| uint16 | 16ビット / 2バイト | 0 〜 65,535 |
| uint32 | 32ビット / 4バイト | 0 〜 4,294,967,295 |
| uint64 | 64ビット / 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(1000 は int8 をオーバーフローさせています、というエラーメッセージが表示されます。)