【Golang】map(連想配列)のkey一覧を取得する方法

Golang

Golangでmapの全てのkeyを取得する方法

Golangには、map(連想配列)のkeyをまとめて取得し、配列に格納するためのピンポイントな関数がありません。

そのため、mapの全てのkeyを取得するには、forループ文でmapからkeyを取り出す処理を自身で実装する必要があります。

大まかな実装手順としては以下のとおりです。

  1. keyを格納する配列(スライス)を定義する
  2. for .. range文でmap(連想配列)からkeyを一つずつ上記で作成した配列に格納する

以下で具体的なコードを用いて解説します。

mapからkey一覧を取得するサンプルコード

以下のコードでは、personsというmap(連想配列)からkeyである人名を取り出し、1つの配列にまとめている処理を記述しています。

package main

import (
	"fmt"
)

func main() {
	persons := map[string]int{"田中": 20, "荒木": 16, "小島": 32, "大城": 28}

	// personsの全部のkeyを取得する処理
	var keys []string
	for key := range persons {
		keys = append(keys, key)
	}

	fmt.Println(keys) // [田中 荒木 小島 大城]
}

最終的に変数keysにはpersonsの全てのkeyが格納されることが分かると思います。

補足ですが、mapに対してfor文を使用した際に変数を一つだけにした場合、その変数にはmapのkeyが当てはまります。

for k := range 連想配列 { // 変数kにはmap(連想配列)のkeyが入る

}
タイトルとURLをコピーしました