配列(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)
この記事を動画で見たければ、こちらでお願いします。
元記事