LoginSignup
2
4

More than 3 years have passed since last update.

[Go言語] 初心者必見シリーズ その1:配列とスライス

Last updated at Posted at 2020-07-26

配列(Arrays)

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

golang-array.png

定義方法

方法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は、配列にはないような宣言方法。

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

スライスの構成

golang-slice.png

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

要素の走査 (iteration)

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

要素の追加 (append)

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

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

動画(YouTube)

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

元記事

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4