Goのmapはkey:valueの配列で構成されており、Pythonの辞書に似ている。ほぼ辞書と同等の使い方ができるようだが、若干挙動が異なる。

 

map定義の構文は以下の通り。

map[keyの型名]値の型名{key: value, key: value, ..., key: value}

 

map1.go

package main

import "fmt"

func main() {

    //mapの基本
    
    city := map[string]int{"NY": 100, "London": 200, "Tokyo": 300, "Bangkok": 400}
    fmt.Println(city)

}

 

結果
出力の順番は保証されない(記述した順番通りに出力されない)。

map[Bangkok:400 London:200 NY:100 Tokyo:300]

 

次にkeyの値を出力、valueの変更、key:valueの追加など。

map2.go

package main

import "fmt"

func main() {

	city := map[string]int{"NY": 100, "London": 200, "Tokyo": 300, "Bangkok": 400}
	fmt.Println(city)             //map[Bangkok:400 London:200 NY:100 Tokyo:300]

    //指定したkeyの値を出力
    fmt.Println(city["Tokyo"])    //300

    //指定したkeyの値を変更
    city["Tokyo"] = 500
	fmt.Println(city["Tokyo"])    //500
    
    //key:valueを新たに追加
	city["Buenos Aires"] = 600
	fmt.Println(city)            //map[Bangkok:400 Buenos Aires:600 London:200 NY:100 Tokyo:500]

}

 

空のmapを作成してkey:valueを追加。配列を初期化して値を追加していくとかありがちだからいつか使う、かも。

map3.go

package main

import "fmt"

func main() {

    //makeで空のmap作成後、key:valueを追加
    city2 := make(map[string]int)
    city2["Paris"] = 700
    fmt.Println(city2)        //map[Paris:700]

}

 

次に、存在しないkey指定時の動作など。

map4.go

package main

import "fmt"

func main() {

    city := map[string]int{"NY": 100, "London": 200, "Tokyo": 300, "Bangkok": 400}
    fmt.Println(city)

    //valueがないkeyを指定すると:
    fmt.Println(city["L.A"])

    //指定したkeyのvalueと、存在有無を出力。値が存在する場合:
    v, isOk := city["London"]
    fmt.Println(v, isOk)

    //値が存在しない場合:
    v2, isOk2 := city["L.A"]
    fmt.Println(v2, isOk2)

}

 

結果

map[Bangkok:400 London:200 NY:100 Tokyo:300]
0
200 true
0 false

 

最後に、Python置き換えの例。

dict.py

def main():

    # 辞書定義
    city = {"NY": 100, "London": 200, "Tokyo": 300, "Bangkok": 400}
    print(city)                 #{'NY': 100, 'London': 200, 'Tokyo': 300, 'Bangkok': 400}
    
    # 指定したkeyの値を出力
    print(city[ "London"])      #200
    
    # 指定したkeyの値を変更
    city[ "Tokyo"] = 500
    print(city[ "Tokyo"])       #500
    
    # key:valueを新たに追加
    city["Buenos Aires"] = 600
    print(city)                 #{'NY': 100, 'London': 200, 'Tokyo': 500, 'Bangkok': 400, 'Buenos Aires': 600}

    # 存在しないkeyを指定
    print(city[ "L.A"])         #KeyError: 'L.A'

if __name__ == "__main__":
main()

 

参考
【Go入門】mapの基本

 

 

Travel


関連がありそうな記事