🦍

Go言語学習ノート

2025/01/25に公開

このブログでは、Go言語の初心者向が学習していることをまとめております。


iotaについて

iotaは、定数宣言時に使用できる便利な識別子です。特に、整数の連番を生成する際に役立ちます。

基本例

以下のコードでは、iotaを使って自動的に連番が割り当てられます。

const (
    hoge = iota
    fuga = iota
    koka = iota
)

/*
これにより、以下の値が設定されます:
- hoge: 0
- fuga: 1
- koka: 2
*/

定数宣言の省略

Goでは、iotaを最初の1つの定数で指定すれば、後続の定数ではiotaを省略できます。この仕組みにより、コードがより簡潔になります。

const (
    hoge = iota
    fuga
    koka
)
/*
これでも結果は同じです:
- hoge: 0
- fuga: 1
- koka: 2
*/

応用例

iotaを用いると、他の計算と組み合わせて独自の連番を作成することもできます。

const (
    first = iota + 1  // 1
    second            // 2
    third             // 3
)

配列とスライス

Goのデータ構造である配列とスライスについて解説します。

配列の基本

Goの配列は固定長で、宣言時に要素数を指定します。一度作成した配列の長さは変更できません。

配列の例

arr := [3]int{1, 2, 3} // 長さ3の配列

// これはエラーになります
arr[3] = 1

配列は固定長であるため、柔軟性に欠ける場合があります。その代わりに使用されるのが「スライス」です。

スライスの基本

スライスは可変長で、配列のように扱うことができます。要素数を指定せずに宣言すると、自動的にスライスとして扱われます。

スライスの例

slice := []int{1, 2, 3} // スライスを作成

スライスへの要素追加

スライスに要素を追加したい場合、append関数を使用します。これにより、新しい要素を持つスライスが返されます。

slice := []int{1, 2, 3}
slice = append(slice, 4) // [1, 2, 3, 4]

スライスの部分選択

スライスの一部を選択して新しいスライスを作成することができます。Goでは、スライスのインデックス指定が半開区間[start:end))であることが特徴です。

部分選択の例

slice := []int{1, 2, 3, 4}

s2 := slice[1:]  // [2, 3, 4] 1番目の要素から最後まで
s3 := slice[:2]  // [1, 2] 最初から2番目未満
s4 := slice[1:2] // [2] 1番目から2番目未満

これにより、効率的に部分データを扱うことが可能です。


mapについて

mapは、Goで提供されるキーと値のペアを持つデータ構造です。PHPの連想配列やJavaScriptのオブジェクトに似た機能を持っています。

mapの基本

以下のコードは、キーをstring型、値をint型とするmapの作成例です。

m := map[string]int{"foo": 42}

/*
このコードを出力すると、以下のように表示されます:
map[foo:42]
*/

要素の取得

特定のキーに対応する値を取得するには、以下のようにキーを指定します。

m["foo"] // 42

要素の削除

要素を削除する場合は、delete関数を使用します。

delete(m, "foo")

この操作により、キーfooとその値がmapから削除されます。


まとめ

今回は、Go言語で重要な「iota」と「スライス」について解説しました。

  • iota: 定数の連番を簡単に作成できる便利な識別子。
  • 配列とスライス: 固定長の配列と可変長のスライスの違いを理解し、スライスの柔軟性を活用する。
  • map: キーと値のペアを扱うための強力なデータ構造。

これらの機能をマスターすることで、Goのコードを書く楽しさが倍増します。ぜひ実際に手を動かして試してみてください!

Discussion