【第四回Go言語学習備忘録】mapに挑戦!

2月 12, 2022

どもです。ZOZOやBUYMAは見ているだけで楽しい、saisaiです。


今回はmapというものについてまとめておこうかと思います。


プログラミング能力が低い僕は、前回学習した"スライス"と"map"の区別が本当につかなくて、学習中はかなり苦労しました。その苦労を供養するためにも頑張って備忘録を作成します。ちなみに"スライス"に関する記事はこちら

mapを使ってみる!

一見"スライス"のように複数の要素を定義している"map"ですが、その特徴は"keyとvalue"で定義する点といえます。
早速以下のようなコードを書いてました。

package main

import "fmt"

func main() {
	m := map[string]int{"lunch": 1000, "dinner": 3000}

	fmt.Println(m["lunch"]) //1000
	fmt.Println(m["dinner"]) //3000

	m["dinner"] = 2000 //値を上書き
	fmt.Printf("Special Night Price is %v\n", m["dinner"])
  //Special Night Price is 2000
}

上記サンプルコードのように、"key"をしていして"value"を引き出すという使い方をするようです。値の上書きも可能のようですね。

定義方法及び"value"の引き出し方は

変数名 := map[keyの型]valueの型{key1:value1,key2:value2,...} //定義方法
変数名["key"] //valueが呼び出される

といった感じです。うむむ、やはりスライスに形が似ておる…。

それぞれの定義方法についてしっかりと認識を分けておく必要がありそうです。

空のmapを作成する。

スライス同様、mapも予め作成しておくことが可能です。こちらも同様にmakeを使用します。

package main

import "fmt"

func main() {
	m := make(map[string]int)

	m["breakfast"] = 700
	m["drink"] = 300

	fmt.Println(m) //map[breakfast:700 drink:300]
	fmt.Println(m["breakfast"]) //700
}

最初にからのmapを作成しておき、あとからkeyとvalueを追加することに成功!
mapの作成方法をまとめると以下のような形になります。

変数 := make(map[keyの型]valueの型)

スライスに比べるとまだ覚えやすそうです….。あとは必要に応じてkeyとvalueを入れ込んでいくことでmapとして使用することが可能です。

mapをrangeを使用して取り出してみる

前回スライスの記事で"rangeを使用して値を順々に取り出す"という方法に挑戦しました。mapでも同じことができるようなので試してみましょう。

コードは以下の通り作成しました。

package main

import "fmt"

func main() {
	m := map[string]int{"breakfast": 700, "lunch": 1000, "dinner": 3000}

	for k, v := range m {
		fmt.Println(k, v)
	}
}
//breakfast 700
//lunch 1000
//dinner 3000

スライス同様、値を順々に取り出すことができています!今回の場合、変数kにkeyが入り変数vにvalueが入れて必要に応じて出力できるようにしています。

ひとこと

今回はmapに関する備忘録でした!形はスライスと似ていますが、用途が全く異なってくるのでしっかり使い分けられるようどんどん使用していきたいと思います。


ちなみに僕はめちゃくちゃ方向音痴です、地図が読めません。関係ないですね。


ここまで読んでいただきありがとうございました!


-saisai-


↓本日のオススメ

Golang

Posted by CY