NU:LOGiC Logo

【Go言語】データ型一覧:Goで使える基本型と使用方法を解説

【Go言語】データ型一覧:Goで使える基本型と使用方法を解説

Go言語では、型が非常に重要です。すべての型は、静的型付けされており、型によって処理速度やメモリ使用量が変わることもあります。しっかりと基本を押さえ、効率の良いコードを書きましょう。

3行で要約すると

  • Go言語の基本型には、int, uint, float32, float64, bool, stringがあり、それぞれの特徴がある。
  • 複合型(Composite Types)として、Array, Slice, Map, Structが存在し、データを構造化する際に使う。
  • Go言語では型変換が厳格で、型変換は明示的に行う必要があり、また型推論も利用できる。

基本型(Primitive Types)

intとuint

intuintは、プラットフォームに依存します。32ビットシステムでは32ビット、64ビットシステムでは64ビットとなります。また、サイズを明示したい場合は、int8, int16, int32, int64などと指定できます。

var i int = -1
var j uint = 1

float32とfloat64

float32は約7桁、float64は約15桁の精度を持っています。計算精度が必要な場合はfloat64を、メモリを節約したい場合はfloat32を選びます。

var f1 float32 = 3.14
var f2 float64 = 3.141592653589793

bool

bool型は条件分岐によく用いられます。truefalseしか取らないため、メモリ使用量も少ないです。

var isActive bool = true

string

Goのstring型はイミュータブル(変更不可)です。このため、文字列を変更するたびに新しいメモリ領域が確保されます。

var greeting string = "Hello, World!"

複合型(Composite Types)

Array

配列は要素数が固定されているため、動的にサイズを変更することはできません。要素数が多くない場合や、要素数が事前に分かっている場合に便利です。

var numbers [5]int = [5]int{1, 2, 3, 4, 5}

Slice

Sliceは内部的に配列を使っていますが、サイズが動的に変わる点が特長です。多くの場合、Sliceが配列よりも使いやすいです。

var numbers []int = []int{1, 2, 3}

Map

Mapはハッシュテーブルに基づいたデータ構造で、高速なキーによるデータのアクセスが可能です。ただし、キーの順番は保証されていません。

var colors map[string]string = map[string]string{
    "red": "#FF0000",
    "green": "#00FF00",
}

Struct

structは異なる型のデータを一つの変数で扱いたい場合に使用します。オブジェクト指向プログラミングのような形でデータを構造化できます。

type Person struct {
    Name string
    Age  int
}

var p Person = Person{Name: "John", Age: 30}

型変換と型推論

型変換

Go言語では、型変換は非常に厳格です。異なる型間での自動変換は行われず、プログラマーが明示的に型変換を指定する必要があります。これは、型に関連するバグを防ぐための設計です。型変換は型名(変数名)の形で書きます。

整数から浮動小数点数へ

var i int = 42
var f float64 = float64(i)

この例では、int型の変数ifloat64型の変数fに変換しています。

文字列から数値へ

import "strconv"

s := "42"
i, err := strconv.Atoi(s)
if err == nil {
    fmt.Println("Converted integer:", i)
} else {
    fmt.Println("Conversion failed!")
}

この例では、strconvパッケージのAtoi関数を使用して、文字列を整数に変換しています。

型推論

Go言語では、:=演算子を使用して変数を宣言すると、右辺の式や値から変数の型を自動的に推論します。これはコードを短くし、タイプミスを減らす一方で、明示的な型宣言が必要な場合もあります。

整数の推論

i := 42  // int

この例では、42は整数なので、iint型と推論されます。

浮動小数点数の推論

f := 3.14  // float64

この例では、3.14は浮動小数点数なので、ffloat64型と推論されます。

複数の変数の推論

i, f, s := 42, 3.14, "hello"

この例では、i, f, sはそれぞれint, float64, string型と推論されます。

まとめ

以上がGo言語で使う基本的なデータ型とその詳細です。Go言語の型は、メモリ効率や計算速度に直結する非常に重要な要素です。しっかりと基礎を理解して、効率の良いプログラムを書きましょう。