【Go入門】mapの操作 – 要素の追加, range, delete

Go
スポンサーリンク

Go言語のmapの基本を扱いましたが、ここでは、もう少しmapの操作について触れていこうと思います。

すでに少し触れたことも含みますが、mapの要素の追加、rangeを使った反復処理、要素の削除について見ていきましょう。

スポンサーリンク

mapの要素の追加

すでに少し扱った部分でもありますが、mapのデータに要素を追加してみます。

要素の追加にはキーを使って値を割り当てます。

package main

import "fmt"

func main() {
	m := map[string]int{
		"新垣結衣": 31,
		"吉岡里帆": 27,
	}
	fmt.Println(m)

	fmt.Println(m["新垣結衣"])

	fmt.Println(m["田中みな実"])

	v, ok := m["田中みな実"]
	fmt.Println(v)
	fmt.Println(ok)

	m["田中みな実"] = 33

	if v, ok := m["田中みな実"]; ok {
		fmt.Println(v)
	}

}

mapでデータを作成して、キーを指定して要素を出力しています。

要素の無いキーを指定して出力の確認をしたあと、値を指定して要素を追加して出力を確認しています。

実行するとこうなります。

map[吉岡里帆:27 新垣結衣:31]
31
0
0
false
33

要素に無いキーを指定しても、値は「0」としか出力されず、真偽値としてもfalseが出力されています。

キーに値を指定して要素を追加すると、値が出力されているのがわかります。

if文で要素と値の真偽を取り出して、tureの場合に処理をするという構文が、ちょっと最初は見慣れない書き方では無いかと思います。ここでは、okが成立している場合に波括弧{}ブロックを実行するという形です。

余談ですが、ここでのキーは「田中みな実」ではなく「本田翼」を使おうと思ったのですが、年齢が「27」で「吉岡里帆」と重なるので変更しました。なお、ここでの人選に特に意味はありません。ただ、みんな好きだなw

スポンサーリンク

rangeを使ってのループ処理

rangeを使ってmapデータの要素をループ処理で一つずつ出力してみようと思います。

次のコードのように、for文を使ってmapデータをrangeで取り出しています。上のコードを修正して利用しています。

package main

import "fmt"

func main() {
	m := map[string]int{
		"新垣結衣": 31,
		"吉岡里帆": 27,
	}

	m["田中みな実"] = 33

	for k, v := range m {
		fmt.Println(k, v)
	}

}

要素をキーを指定して追加してから、for文でキーと要素を取り出しています。

この時、rangeでmapのmを指定して取り出して出力しています。

実行するとこうなります。

田中みな実 33
新垣結衣 31
吉岡里帆 27

全てのキーと要素が順に出力されているのがわかります。

なお、データの順番は保証されてはいません。

スポンサーリンク

要素のdelete

今度は、mapデータから要素を削除する方法を見ていきましょう。

削除にはdeleteを使います。キーを指定して要素を追加したように、キーを指定して要素を削除することができます。

次の形で削除します。

delete([mapの変数], key)

実際のコードで要素を削除してみましょう。

package main

import "fmt"

func main() {
	m := map[string]int{"新垣結衣": 31, "吉岡里帆": 27}

	fmt.Println(m)

	delete(m, "新垣結衣")
	fmt.Println(m)

	if v, ok := m["吉岡里帆"]; ok {
		fmt.Println("age:", v)
		delete(m, "吉岡里帆")
	}
	fmt.Println(m)

}

キーを指定してdeleteで要素を削除したあと、mapを出力しています。

if文の処理の中でも要素を削除しています。

実行すると次のように出力されます。

map[吉岡里帆:27 新垣結衣:31]
map[吉岡里帆:27]
age: 27
map[]

順に要素が削除されているのがわかります。

全ての要素が削除されるとmap[]と出力されることになります。

スポンサーリンク

Pythonでコードを書くと…

同じような操作を、Pythonの辞書型のデータで行ってみます。

次のようなコードで同じような処理ができます。

def main():

    m = {"新垣結衣": 31, "吉岡里帆": 27}
    print(m)

    m["田中みな実"] = 33
    print(m)

    print(m.pop("新垣結衣"))
    print(m)

    m.clear()
    print(m)


if __name__ == "__main__":
    main()

辞書型データに、新たにキーを指定して要素を追加する処理をしています。

その後、pop()を使ってキーを指定して、要素を削除しています。

最後はclear()を使って全てのデータを削除しています。

実行するとこうなります。

{'新垣結衣': 31, '吉岡里帆': 27}
{'新垣結衣': 31, '吉岡里帆': 27, '田中みな実': 33}
31
{'吉岡里帆': 27, '田中みな実': 33}
{}

要素が追加されているのがわかります。

popで削除すると、削除された値がいったん出力されます。

clear()で空の辞書データになっているのがわかります。

スポンサーリンク

最後に

ここでは、Go言語のmapの操作を行いました。

キーを指定して要素を追加することができます。

mapをrangeで使うことで、キーと値を反復処理で取り出すことができます。

deleteを使って、キーを指定して要素を削除することができます。

Go
スポンサーリンク
CodeGraffitiをフォローする

コードグラフィティ ~ とにかく進もうプログラミング入門~
タイトルとURLをコピーしました