配列(Arrays)

配列は 連続したメモリ領域 を確保するデータ構造です。

配列の構成イメージ

定義方法

方法1

構文:

  var 配列名 [サイズ]型

例:

  var a [2]string

方法2

構文:

    var  配列名  [サイズ]型
        = [サイズ]型{初期値1, ..., 初期値n} 

例:

    var a [2]string
        = [2]string{"Hello", "Go"}

NOTE: 宣言と同時に代入する。

方法3

構文:

    配列名 := [サイズ]型{初期値1, ..., 初期値n} 

例:

    a := [2]string{"Hello", "Go"}

NOTE: 宣言と同時に代入するなら、方法2よりもこちらが簡潔でおすすめ。

方法4

構文:

    配列名 := [...]型{初期値1, ..., 初期値n}

例:

    a := [...]string{"Hello", "Go"}

NOTE: 配列のサイズを “…” にすると、コンパイラーが自動的に要素数を数えてくれる。

多次元配列 (Multiple Dimension)

多次元配列 (Multiple Dimension) は、
[]の数 を増やせば1次元配列と同じように定義することができる。

例:

    a := [][]string{
        {"Hello", "Go"},
        {"Hello", "Python"},
    }

要素の走査 (iteration)

方法1: len関数を利用することで配列のサイズを取得。

for i := 0; i < len(array); i++ {
  fmt.Println(array[i])
}

方法2 : rangeを使って配列を走査。

for index, value := range array{   
    fmt.Println(index, value)
}

まとめ

  • 配列は、宣言後にサイズを変更できません。(固定長

    あらかじめデータサイズの確定しないデータには向いてません。

  • 配列は、基本同じ型をもつ要素を格納しますが、

    いろんな型を混在させたい場合は interface 型で初期化します。

    array := []interface{}{“hello", 10, 2.5}

スライス(Slices)

スライスは可変長の配列の様な動きをするデータ構造です。

定義方法

定義方法は配列と似ていて、サイズを指定せずに宣言します。

方法1

構文:

var 名前 []型

例:

var a []string

方法2

構文:

var 名前 []型 = []型{初期値1, ..., 初期値n} 

例:

var a []string = []string{"Hello", "Go"}

方法3

構文:

名前 := []型{初期値1, ..., 初期値n}

例:

a := []string{"Hello", "Go"}

方法4

構文:

名前 := make([]型, 初期長さ ,初期容量)

例:

a := make([]string, 2, 10)

方法4は、配列にはないような宣言方法。

初期容量はオプション引数。

スライスの構成

スライスの構成イメージ

スライスは配列への参照のようなもの。

要素の走査 (iteration)

走査方法は、配列と同様です。

要素の追加 (append)

スライスへ新しい要素を追加するには、Goの組み込みの append関数 を使います。

要素追加時の動きは、こちらの動画が分かりやすくご覧いただければと思います。

動画(YouTube)

この記事を動画で見たければ、こちらでお願いします。

0%