Goプログラミングの基礎となるデータ型を学ぼう!
プログラミングでは、様々な種類のデータ(数値、文字、真偽など)を扱います。Go言語では、これらのデータを効率的に扱うために「データ型」という仕組みが用意されています。データ型は、変数にどのような種類の値を格納できるかを定義します。
今回は、Go言語で最もよく使われる基本的なデータ型、整数型 (int
)、浮動小数点数型 (float
)、文字列型 (string
)、真偽値型 (bool
) について学んでいきましょう!
整数型 (Integer Types)
整数型は、-1
, 0
, 100
のような整数値を格納するためのデータ型です。Go言語には、扱える値の範囲や符号の有無によっていくつかの整数型があります。
主な整数型
型名 | 説明 | 範囲 (一般的な環境) |
---|---|---|
int8 | 符号付き8ビット整数 | -128 ~ 127 |
int16 | 符号付き16ビット整数 | -32768 ~ 32767 |
int32 | 符号付き32ビット整数 | -2147483648 ~ 2147483647 |
int64 | 符号付き64ビット整数 | -9223372036854775808 ~ 9223372036854775807 |
uint8 | 符号なし8ビット整数 (byte の別名) | 0 ~ 255 |
uint16 | 符号なし16ビット整数 | 0 ~ 65535 |
uint32 | 符号なし32ビット整数 | 0 ~ 4294967295 |
uint64 | 符号なし64ビット整数 | 0 ~ 18446744073709551615 |
int | プラットフォーム依存 (32bit環境ではint32 , 64bit環境ではint64 ) | プラットフォーム依存 |
uint | プラットフォーム依存 (32bit環境ではuint32 , 64bit環境ではuint64 ) | プラットフォーム依存 |
rune | Unicodeコードポイントを表す (int32 の別名) | -2147483648 ~ 2147483647 |
通常、整数を扱う際は int
を使うことが多いです。Goは実行環境(OSが32bitか64bitか)に応じて最適なサイズ (int32
または int64
) を自動で選択してくれます。
使い方
package main
import "fmt"
func main() { // varを使って明示的に型を指定 var age int = 30 var score int64 = -10000000000 // := を使った型推論 (通常はint型になる) count := 10 negativeCount := -5 // 符号なし整数 var positiveScore uint = 150 fmt.Println("Age:", age) fmt.Println("Score:", score) fmt.Println("Count:", count) fmt.Println("Negative Count:", negativeCount) fmt.Println("Positive Score:", positiveScore) // 演算 sum := age + count fmt.Println("Sum:", sum)
}
浮動小数点数型 (Floating-Point Types)
浮動小数点数型は、3.14
や -0.5
のような小数を含む数値を格納するためのデータ型です。Go言語には主に2種類の浮動小数点数型があります。
主な浮動小数点数型
型名 | 説明 | 精度 |
---|---|---|
float32 | 単精度浮動小数点数 | 約6桁の精度 |
float64 | 倍精度浮動小数点数 | 約15桁の精度 |
通常、精度が求められる計算では float64
を使うことが推奨されます。型を省略して小数を変数に代入した場合、Goは自動的に float64
を選択します。
使い方
package main
import "fmt"
func main() { // varを使って明示的に型を指定 var pi float32 = 3.14159 var price float64 = 99.99 // := を使った型推論 (通常はfloat64型になる) ratio := 0.75 temperature := -5.5 fmt.Println("Pi (float32):", pi) fmt.Println("Price (float64):", price) fmt.Println("Ratio:", ratio) fmt.Println("Temperature:", temperature) // 演算 totalPrice := price * (1.0 + ratio) // priceはfloat64なので、ratioもfloat64として扱われる fmt.Println("Total Price:", totalPrice)
}
==
) を行う際には注意が必要です。また、float32
と float64
の間の演算も型変換が必要です。 文字列型 (String Type)
文字列型 (string
) は、「Hello, World!」のような文字の並びを格納するためのデータ型です。Goの文字列はダブルクォート ("
) で囲んで表現します。
特徴
- 不変 (Immutable): 一度作成した文字列の内容を変更することはできません。新しい文字列を代入することは可能です。
- UTF-8エンコーディング: Goの文字列は内部的にUTF-8でエンコードされており、日本語などの多バイト文字もそのまま扱えます。
- 連結可能:
+
演算子を使って文字列同士を連結できます。
使い方
package main
import "fmt"
func main() { // varを使って明示的に型を指定 var message string = "こんにちは、Go言語!" // := を使った型推論 greeting := "Hello" target := "World" fmt.Println(message) // 文字列の連結 helloWorld := greeting + ", " + target + "!" // + で連結 fmt.Println(helloWorld) // 文字列の長さを取得 (バイト単位) fmt.Println("Length of message (bytes):", len(message)) // 文字列の一部にアクセス (バイト単位でのアクセスになるので注意) fmt.Println("First byte of greeting:", greeting[0]) // H のASCIIコードが出力される // 文字列は変更不可 // greeting[0] = 'h' // このような操作はコンパイルエラーになる
}
len()
関数で取得できるのは文字列のバイト数です。日本語のようなマルチバイト文字を含む場合、文字数とは一致しない点に注意が必要です。文字数を正確に数えたい場合は、unicode/utf8
パッケージの RuneCountInString()
関数などを使います。 真偽値型 (Boolean Type)
真偽値型 (bool
) は、真 (true
) または偽 (false
) のどちらかの値のみを持つデータ型です。条件分岐 (if
文) やループ (for
文) の制御などで非常に重要な役割を果たします。
使い方
package main
import "fmt"
func main() { // varを使って明示的に型を指定 (初期値は false) var isEnabled bool var isVisible bool = true // := を使った型推論 hasPermission := true isFinished := false fmt.Println("isEnabled (default):", isEnabled) // false fmt.Println("isVisible:", isVisible) // true fmt.Println("hasPermission:", hasPermission) // true fmt.Println("isFinished:", isFinished) // false // 論理演算子 (&&: AND, ||: OR, !: NOT) canProceed := isEnabled && hasPermission // false AND true => false canShow := isVisible || isFinished // true OR false => true isNotFinished := !isFinished // NOT false => true fmt.Println("Can Proceed:", canProceed) fmt.Println("Can Show:", canShow) fmt.Println("Is Not Finished:", isNotFinished) // 条件分岐での利用 if hasPermission { fmt.Println("権限があります。") } else { fmt.Println("権限がありません。") }
}
bool
型は非常にシンプルですが、プログラムのロジックを組み立てる上で欠かせない要素です。
まとめ
今回はGo言語の基本的なデータ型である int
, float
, string
, bool
について学びました。
int
: 整数を扱う。通常はint
を使う。float
: 小数を扱う。通常はfloat64
を使う。string
: 文字列を扱う。不変でUTF-8エンコーディング。bool
: 真偽値 (true
/false
) を扱う。
これらの基本データ型は、Goプログラミングのあらゆる場面で登場します。それぞれの特徴を理解し、適切に使いこなせるようになりましょう!